source: doc/bibliography/pl.bib @ 1836081

aaron-thesisarm-ehcleanup-dtorsjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-expr
Last change on this file since 1836081 was 1836081, checked in by Aaron Moss <a3moss@…>, 3 years ago

thesis: second draft of ch.5

  • Property mode set to 100644
File size: 245.9 KB
Line 
1% Conventions: uncross-referenced entries appear first, then
2%    cross-referenced entries.  In both groups, entries are sorted by their
3%    title field.  Lines like "% A" exist to speed searches.  The main
4%    paper on a language uses the language name as the citation key.  Other
5%    papers use ``<language name>:'' as a prefix.  Please consider leaving
6%    keyword lists and an abstract or comment for future generations, and
7%    put some identification in a contributer field.
8
9%    Predefined journal names:
10%  acmcs: Computing Surveys             acta: Acta Infomatica
11@string{acta="Acta Infomatica"}
12%  cacm: Communications of the ACM
13%  ibmjrd: IBM J. Research & Development ibmsj: IBM Systems Journal
14%  ieeese: IEEE Trans. on Soft. Eng.    ieeetc: IEEE Trans. on Computers
15%  ieeetcad: IEEE Trans. on Computer-Aided Design of Integrated Circuits
16%  ipl: Information Processing Letters  jacm: Journal of the ACM
17%  jcss: J. Computer & System Sciences  scp: Science of Comp. Programming
18%  sicomp: SIAM J. on Computing         tocs: ACM Trans. on Comp. Systems
19%  tods: ACM Trans. on Database Sys.    tog: ACM Trans. on Graphics
20%  toms: ACM Trans. on Math. Software   toois: ACM Trans. on Office Info. Sys.
21%  toplas: ACM Trans. on Prog. Lang. & Sys.
22%  tcs: Theoretical Computer Science
23
24string{ieeepds="IEEE Transactions on Parallel and Distributed Systems"}
25@string{ieeepds="IEEE Trans. Parallel Distrib. Syst."}
26string{ieeese="IEEE Transactions on Software Engineering"}
27@string{ieeese="IEEE Trans. Softw. Eng."}
28string{spe="Software---\-Practice and Experience"}
29@string{spe="Softw. Pract. Exper."}
30string{ccpe="Concurrency and Computation: Practice and Experience"}
31@string{ccpe="Concurrency Comput.: Pract. Exper."}
32string{sigplan="SIGPLAN Notices"}
33@string{sigplan="SIGPLAN Not."}
34string{joop="Journal of Object-Oriented Programming"}
35@string{joop="J. of Object-Oriented Program."}
36@string{popl="Conference Record of the ACM Symposium on Principles of Programming Languages"}
37@string{osr="Operating Systems Review"}
38@string{pldi="Programming Language Design and Implementation"}
39@string{toplas="Transactions on Programming Languages and Systems"}
40string{mathann="Mathematische Annalen"}
41@string{mathann="Math. Ann."}
42
43% A
44
45@incollection{ABC++,
46    keywords    = {concurrency, parallel, distributed, C++},
47    contributer = {pabuhr@plg},
48    author      = {William G. O'Farrell and Frank Ch. Eigler and S. David Pullara and Gregory V. Wilson },
49    title       = {{ABC}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
50    editor      = {Gregory V. Wilson and Paul Lu},
51    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
52    publisher   = {MIT Press},
53    address     = {New York},
54    series      = {Scientific and Engineering Computation Series},
55    year        = 1996,
56    pages       = {1-42},
57}
58
59@techreport{CL90abstract,
60    keywords    = {},
61    contributer = {gjditchfield@plg},
62    author      = {Luca Cardelli and Xavier Leroy},
63    title       = {Abstract Types and the Dot Notation},
64    institution = {Systems Research Center},
65    year        = 1990,
66    address     = {130 Lytton Avenue, Palo Alto, CA  94301},
67    number      = 56,
68    summary     = {
69        The existential types of Mitchell and Plotkin \cite{atet} model
70        abstract types, but their ``open'' notation is unlike the usual dot
71        notation used in programming languages.  This paper gives
72        translations between the ``open'' and ``dot'' forms, and suggests
73        extensions for nested and for parameterized abstractions.
74    }
75}
76
77@article{atet,
78    keywords    = {lambda calculus, polymorphism},
79    contributer = {gjditchfield@plg},
80    author      = {John C. Mitchell and Gordon D. Plotkin},
81    title       = {Abstract Types have Existential Type},
82    journal     = toplas,
83    year        = 1988,
84    month       = jul, volume = 10, number = 3, pages = {470-502},
85    abstract    = {
86        Abstract data type declarations appear in typed programming
87        languages like Ada, Alphard, CLU and ML.  This form of declaration
88        binds a list of identifiers to a type with associated operations, a
89        composite ``value'' we call a {\em data algebra}.  We use a
90        second-order typed lambda calculus SOL to show how data algebras
91        may be given types, passed as parameters, and returned as results of
92        function calls.  In the process, we discuss the semantics of
93        abstract data type declarations and review a connection between
94        typed programming languages and constructive logic.
95    }
96}
97
98@article{alphard:intro,
99    keywords    = {encapsulation, data abstraction},
100    contributer = {gjditchfield@plg},
101    author      = {Wm. A. Wulf and Ralph L. London and Mary Shaw},
102    title       = {Abstraction and Verification in Alphard: Introduction to Language and Methodology},
103    journal     = ieeese,
104    year        = 1976,
105    month       = dec, volume = {SE-2}, number = 4, pages = {253-265},
106    note        = {Reprinted in \cite{alphard}.},
107    abstract    = {
108        Alphard is a programming language whose goals include supporting
109        both the development of well-structured programs and the formal
110        verification of these programs.  This paper attempts to capture the
111        symbiotic influence of these two goals on the design of the
112        language.  To that end the language description is interleaved with
113        the presentation of a proof technique and discudssion of
114        programming methodology.  Examples to illustrate both the language
115        and the verification technique are included.
116    }
117}
118
119@book{Hilfinger83,
120    keywords    = {ada},
121    author      = {Paul N. Hilfinger},
122    title       = {Abstraction Mechanisms and Language Design},
123    publisher   = {MIT Press},
124    series      = {ACM Distinguished Dissertations},
125    year        = 1983,
126}
127
128@incollection{Lavender96,
129    author      = {R. Greg Lavender and Douglas C. Schmidt},
130    chapter     = {Active Object: An Object Behavioral Pattern for Concurrent Programming},
131    title       = {Pattern Languages of Program Design 2},
132    editor      = {John M. Vlissides and James O. Coplien and Norman L. Kerth},
133    year        = 1996,
134    pages       = {483-499},
135    publisher   = {Addison-Wesley Longman Publishing},
136    address     = {Boston},
137}
138
139@article{Nierstrasz87,
140    keywords    = {Hybrid, active objects, object-oriented languages, object-based languages, delegation, concurrency},
141    contributer = {pabuhr@plg},
142    author      = {O. M. Nierstrasz},
143    title       = {Active Objects in {Hybrid}},
144    journal     = sigplan,
145    volume      = 22,
146    number      = 12,
147    month       = dec,
148    year        = 1987,
149    pages       = {243-253},
150    note        = {Proceedings of the OOPSLA'87 Conference, Oct. 4--8, 1987, Orlando, Florida},
151    abstract    = {
152        Most object-oriented languages are strong on reusability or on
153        strong-typing, but weak on concurrency.  In response to this gap,
154        we are developing {\it Hybrid}, an object-oriented language in which
155        objects are the active entities.  Objects in Hybrid are organized
156        into {\it domains}, and concurrent executions into {\it activities}.
157        All object communications are based on remote procedure calls.
158        Unstructured {\it sends\/} and {\it accepts\/} are forbidden.  To
159        this the mechanisms of {\it delegation\/} and {\it delay queues\/}
160        are added to enable switching and triggering of activities.
161        Concurrent subactivities and atomic actions are provided for
162        compactness and simplicity.  We show how solutions to many important
163        concurrent problems [sic], such as pipelining, constraint management
164        and ``administration'' can be compactly expressed using these
165        mechanisms.
166   },
167   comment      = {Mentions Thoth in reference to delegation}
168}
169
170@book{Actors,
171    keywords    = {actors, concurrency},
172    contributer = {pabuhr@plg},
173    author      = {Gul A. Agha},
174    title       = {Actors: A Model of Concurrent Computation in Distributed Systems},
175    publisher   = {MIT Press, Cambridge},
176    year        = 1986
177}
178
179@article{polymorphImpl,
180    keywords    = {Napier88},
181    contributer = {gjditchfield@plg},
182    author      = {R. Morrison and A. Dearle and R. C. H. Connor and A. L. Brown},
183    title       = {An Ad Hoc Approach to the Implementation of Polymorphism},
184    journal     = toplas,
185    year        = 1991,
186    month       = jul,
187    volume      = 13,
188    number      = 3,
189    pages       = {342-371},
190    abstract    = {
191        Polymorphic abstraction provides the ability to write programs that
192        are independent of the form of the data over which they operate.
193        There are a number of different categories of polymorphic
194        expression---ad hoc and universal, which includes parametric and
195        inclusion---all of which have many advantages in terms of code
196        reuse and software economics.  It has proved difficult to provide
197        efficient implementations of polymorphism.  Here, we address this
198        problem and describe a new technique that can implement all forms
199        of polymorphism, use a conventional machine architecture, and
200        support nonuniform data representations.  Furthermore, the method
201        ensures that any extra cost of implementation applies to
202        polymorphic forms only, and allows such polymorphic forms to
203        persist over program invocations.
204    },
205    summary     = {
206        They give three ways to implement polymorphism: {\em textual
207        polymorphism}, which seems to be template instantiation, {\em
208        uniform polymorphism}, which they explain badly, and {\em tagged
209        polymorphism}, where object code performs type tests.
210
211        They use first-class procedures to implement polymorphism: routines
212        with type parameters are implemented as curried routines that
213        return a nested routine that refers to the type parameter.
214    }
215}
216
217@article{dim:ada,
218    keywords    = {Dimensional Analysis, Ada},
219    contributer = {gjditchfield@plg},
220    author      = {Paul N. Hilfinger},
221    title       = {An {Ada} Package for Dimensional Analysis},
222    journal     = toplas,
223    month       = apr,
224    year        = 1988,
225    volume      = 10,
226    number      = 2,
227    pages       = {189-203},
228}
229
230@mastersthesis{Younger91,
231    keywords    = {concurrency, C++, postponing requests},
232    contributer = {pabuhr@plg},
233    author      = {Brian M. Younger},
234    title       = {Adding Concurrency to {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
235    school      = {University of Waterloo},
236    year        = 1991,
237    address     = {Waterloo, Ontario, Canada, N2L 3G1},
238}
239
240@inproceedings{Buhr92c,
241    keywords    = {concurrency},
242    contributer = {pabuhr@plg},
243    author      = {Peter A. Buhr and Glen Ditchfield},
244    title       = {Adding Concurrency to a Programming Language},
245    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Technical Conference Proceedings},
246    organization= {USENIX Association},
247    address     = {Portland, Oregon, U.S.A.},
248    month       = aug,
249    year        = 1992,
250    pages       = {207-224},
251}
252
253@article{Buhr89b,
254    keywords    = {concurrency, C++},
255    contributer = {pabuhr@plg},
256    author      = {P. A. Buhr and Glen Ditchfield and C. R. Zarnke},
257    title       = {Adding Concurrency to a Statically Type-Safe Object-Oriented Programming Language},
258    journal     = sigplan,
259    volume      = 24,
260    number      = 4,
261    month       = apr,
262    year        = 1989,
263    pages       = {18-21},
264    note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming, Sept. 26--27, 1988, San Diego, California, U.S.A.},
265}
266
267@article{Knuth66,
268    keywords    = {N-thread software-solution mutual exclusion},
269    contributer = {pabuhr@plg},
270    author      = {Donald E. Knuth},
271    title       = {Additional Comments on a Problem in Concurrent Programming Control},
272    journal     = cacm,
273    month       = may,
274    year        = 1966,
275    volume      = 9,
276    number      = 5,
277    pages       = {321-322},
278    note        = {Letter to the Editor}
279}
280
281@article{DeBruijn67,
282    keywords    = {N-thread software-solution mutual exclusion},
283    contributer = {pabuhr@plg},
284    author      = {Nicolaas Govert de Bruijn},
285    title       = {Additional Comments on a Problem in Concurrent Programming Control},
286    journal     = cacm,
287    month       = mar,
288    year        = 1967,
289    volume      = 10,
290    number      = 3,
291    pages       = {137-138},
292    note        = {letter to the Editor}
293}
294
295@phdthesis{Krischer10,
296    author      = {Roy Krischer},
297    title       = {Advanced Concepts in Asynchronous Exception Handling},
298    school      = {University of Waterloo},
299    year        = 2010,
300    month       = dec,
301    address     = {Waterloo, Ontario, Canada, N2L 3G1},
302    optnote     = {\textsf{http://uwspace.uwaterloo.ca/\-bitstream/10012/\-5751\-/1/Krischer\_Roy.pdf}},
303    note        = {\href{http://uwspace.uwaterloo.ca/bitstream/10012/5751/1/Krischer_Roy.pdf}{http://uwspace.uwaterloo.ca/\-bitstream/10012/\-5751\-/1/Krischer\_Roy.pdf}},
304}
305
306@article{Buhr00a,
307    keywords    = {exception handling},
308    contributer = {pabuhr@plg},
309    author      = {Peter A. Buhr and W. Y. Russell Mok},
310    title       = {Advanced Exception Handling Mechanisms},
311    journal     = ieeese,
312    volume      = 26,
313    number      = 9,
314    month       = sep,
315    year        = 2000,
316    pages       = {820-836},
317}
318
319@book{Richter97,
320    keywords    = {Win32, threads},
321    author      = {Jeffrey M. Richter},
322    title       = {Advanced Windows},
323    publisher   = {Microsoft Press},
324    year        = 1997,
325    edition     = {3rd},
326}
327
328@article{Francez77,
329    keywords    = {parameter passing, named/positional arguments},
330    contributer = {pabuhr@plg},
331    author      = {Nissim Francez},
332    title       = {Another Advantage of Key word Notation for Parameter Communication with Subprograms},
333    journal     = cacm,
334    volume      = 20,
335    number      = 8,
336    month       = aug,
337    year        = 1977,
338    pages       = {604-605},
339}
340
341@manual{Akka,
342    keywords    = {Akka actor model},
343    contributer = {pabuhr@plg},
344    title       = {{A}kka {S}cala Documentation, Release 2.4.11},
345    organization= {Lightbend Inc.},
346    month       = sep,
347    year        = 2016,
348    note        = {\href{http://doc.akka.io/docs/akka/2.4/AkkaScala.pdf}{http://\-doc.akka.io/\-docs/\-akka/\-2.4/\-AkkaScala.pdf}},
349}
350
351@article{Algol60,
352    keywords    = {Algol60},
353    contributer = {pabuhr@plg},
354    author      = {J. W. Backus and F. L. Bauer and J. Green and C. Katz and
355                   J. McCarthy and P. Naur and A. J. Perlis and H. Rutishauser and K. Samuelson
356                   and B. Vauquois and J.H. Wegstein and A. van Wijngaarden and M. Woodger},
357    title       = {Revised Report on the Algorithmic Language Algol 60},
358    editor      = {Peter Nauer},
359    journal     = cacm,
360    volume      = 6,
361    number      = 1,
362    month       = jan,
363    year        = 1963,
364    pages       = {1-17},
365}
366
367@article{Mellor-Crummey91,
368    keywords    = {spin locks, compare-and-swap, barriers},
369    contributer = {pabuhr@plg},
370    author      = {John M. Mellor-Crummey and Michael L. Scott},
371    title       = {Algorithm for Scalable Synchronization on Shared-Memory Multiprocessors},
372    journal     = tocs,
373    volume      = 9,
374    number      = 1,
375    month       = feb,
376    year        = 1991,
377    pages       = {21-65},
378}
379
380@article{Hoare61,
381    keywords    = {quick sort},
382    contributer = {pabuhr@plg},
383    author      = {C. A. R. Hoare},
384    title       = {Algorithms 63/64: Partition/Quicksort},
385    journal     = cacm,
386    volume      = 4,
387    number      = 7,
388    month       = jul,
389    year        = 1961,
390    pages       = {321},
391}
392
393@article{Cormack81,
394    keywords    = {},
395    contributer = {gjditchfield@plg},
396    author      = {Gordon V. Cormack},
397    title       = {An Algorithm for the Selection of Overloaded Functions in {Ada}},
398    journal     = sigplan,
399    year        = 1981,
400    month       = feb, volume = 16, number = 2, pages = {48-52},
401    comment     = {
402        A one-pass, top-down algorithm for overload resolution.  Input is a
403        parse tree and the desired result type, and output is the number of
404        solutions.  For each overloading of the root identifier with a
405        matching parameter list, recursively solve for each parameter for
406        the corresponding argument type---there should be one solution.
407    }
408}
409
410@book{Raynal86,
411    keywords    = {mutual exclusion, locks},
412    contributer = {pabuhr@plg},
413    author      = {M. Raynal},
414    title       = {Algorithms for Mutual Exclusion},
415    publisher   = {MIT Press},
416    address     = {Cambridge},
417    series      = {Scientific Computation Series},
418    year        = 1986,
419    note        = {Translated by D. Beeson},
420}
421
422@incollection{Gidenstam05,
423    keywords    = {lock free, dynamic memory allocation},
424    contributer = {pabuhr@plg},
425    author      = {Anders Gidenstam and Marina Papatriantafilou and Philippas Tsigas},
426    title       = {Allocating Memory in a Lock-free Manner},
427    editor      = {Gerth St{\o}lting Brodal and Stefano Leonardi},
428    booktitle   = {Algorithms -- ESA 2005},
429    pages       = {329-342},
430    publisher   = {Springer},
431    address     = {New York},
432    year        = 2005,
433    volume      = 3669,
434    series      = {Lecture Notes in Computer Science},
435}
436
437@book{Sites92,
438    keywords    = {computers, Alpha},
439    contributer = {pabuhr@plg},
440    editor      = {Richard L. Sites},
441    title       = {Alpha Architecture Reference Manual},
442    publisher   = {Digital Press, Burlington},
443    year        = 1992,
444}
445
446@book{alphard,
447    keywords    = {Parametric polymorphism, alphard, iterators, nested types},
448    contributer = {gjditchfield@plg},
449    key         = {Alphard},
450    editor      = {Mary Shaw},
451    title       = {{ALPHARD}: Form and Content},
452    publisher   = {Springer},
453    address     = {New York},
454    year        = 1981,
455    comment     = {Collection of papers about Alphard.}
456}
457
458@article{Kessels77,
459    keywords    = {monitors},
460    contributer = {pabuhr@plg},
461    author      = {Joep L. W. Kessels},
462    title       = {An Alternative to Event Queues for Synchronization in Monitors},
463    journal     = cacm,
464    volume      = 20,
465    number      = 7,
466    month       = jul,
467    year        = 1977,
468    pages       = {500-503},
469    annote      = {
470    }
471}
472
473@article{descr,
474    keywords    = {X2, subclasses, inheritance, parameterized classes},
475    contributer = {gjditchfield@plg},
476    author      = {David Sandberg},
477    title       = {An Alternative to Subclassing},
478    journal     = sigplan,
479    volume      = {21},    number = {11},
480    pages       = {424-428},
481    month       = nov, year = 1986,
482    comment     = {
483        The Smalltalk class hierarchy has three uses: factoring out code;
484        ``Abstraction superclasses'' such as Collection; rapid construction
485        of new classes by incremental change.
486
487        ``A descriptive class specifies a partial behavior by specifying a
488        set of procedure headings that describe what can be done with
489        instances of classes that belong to the descriptive class.''  An
490        ``instance'' statement declares a class to be an instance of a
491        descriptive class and defines the correspondence between
492        operations.  Procedures with descriptive class parameters take any
493        instance as arguments.  Descriptive classes can describe relations
494        like ``c is a collection with element type e'', but how such things
495        are used isn't explained.
496       
497        For each descriptive class used in a parameter list, an implicit
498        parameter is created that is passed a vector of procedures.
499    }
500}
501
502@incollection{Matsuoka93,
503    keywords    = {inheritance anomaly},
504    contributer = {pabuhr@plg},
505    author      = {Satoshi Matsuoka and Akinori Yonezawa},
506    title       = {Analysis of Inheritance Anomaly in Object-Oriented Concurrent Programming Languages},
507    booktitle   = {Research Directions in Concurrent Object-Oriented Programming},
508    editor      = {Gul Agha and Peter Wegner and Akinori Yonezawa},
509    publisher   = {MIT Press},
510    address     = {New York},
511    year        = 1993,
512    pages       = {107-150},
513}
514
515@article{Sinha00,
516    author      = {Saurabh Sinha and Mary Jean Harrold},
517    title       = {Analysis and Testing of Programs with Exception-Handling Constructs},
518    journal     = ieeese,
519    year        = 2000,
520    month       = sep,
521    volume      = 26,
522    number      = 9,
523    pages       = {849--871},
524}
525
526@inproceedings{Robillard99,
527    author      = {Martin P. Robillard and Gail C. Murphy},
528    title       = {Analyzing Exception Flow in {J}ava Programs},
529    booktitle   = {ESEC/FSE-7: Proceedings of the 7th European Software Engineering Conference held jointly
530                   with the 7th ACM SIGSOFT International Symposium on Foundations of Software Engineering},
531    year        = 1999,
532    pages       = {322--337},
533    isbn        = {3-540-66538-2},
534    location    = {Toulouse, France},
535    doi         = {http://doi.acm.org/10.1145/318773.319251},
536    publisher   = {Springer},
537    address     = {London, UK},
538}
539
540@book{C++,
541    keywords    = {C++, ANSI},
542    author      = {Margaret A. Ellis and Bjarne Stroustrup},
543    title       = {The Annotated {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Reference Manual},
544    publisher   = {Addison-Wesley},
545    address     = {Boston},
546    year        = 1990,
547    edition     = {1st},
548}
549
550@book{APL,
551    keywords    = {APL},
552    contributer = {pabuhr@plg},
553    author      = {K. E. Iverson},
554    title       = {A Programming Language},
555    publisher   = {Wiley, New York},
556    year        = 1962
557}
558
559@article{PS-Algol:old,
560    author      = {M. Atkinson and P. Bailey and K. Chisholm and P. Cockshott and R. Morrison},
561    title       = {An Approach to Persistent Programming},
562    journal     = {The Computer Journal},
563    year        = 1983,
564    volume      = 26,
565    number      = 4,
566    pages       = {360-365},
567}
568
569@inproceedings {Qin18,
570    author      = {Henry Qin and Qian Li and Jacqueline Speiser and Peter Kraft and John Ousterhout},
571    title       = {Arachne: Core-Aware Thread Management},
572    booktitle   = {13th {USENIX} Symp. on Oper. Sys. Design and Impl. ({OSDI} 18)},
573    year        = {2018},
574    address     = {Carlsbad, CA},
575    pages       = {145-160},
576    publisher   = {{USENIX} Association},
577    note        = {\href{https://www.usenix.org/conference/osdi18/presentation/qin}{https://\-www.usenix.org/\-conference/\-osdi18/\-presentation/\-qin}},
578}
579
580@article{Kessels82,
581    keywords    = {concurrency, critical section},
582    contributer = {pabuhr@plg},
583    author      = {Joep L. W. Kessels},
584    title       = {Arbitration Without Common Modifiable Variables},
585    journal     = acta,
586    volume      = 17,
587    number      = 2,
588    month       = jun,
589    year        = 1982,
590    pages       = {135-141},
591}
592
593@article{Buhr95a,
594    keywords    = {concurrency, library approach},
595    contributer = {pabuhr@plg},
596    author      = {Peter A. Buhr},
597    title       = {Are Safe Concurrency Libraries Possible?},
598    journal     = cacm,
599    month       = feb,
600    year        = 1995,
601    volume      = 38,
602    number      = 2,
603    pages       = {117-120},
604}
605
606@book{ARMv7,
607    key         = {ARM processor},
608    title       = {ARM Architecture Reference Manual},
609    publisher   = {ARM},
610    volume      = {ARM DDI 0406C.b (ID072512)},
611    year        = 2012,
612}
613
614@book{Herlihy08,
615    contributer = {pabuhr@plg},
616    author      = {Herlihy, Maurice and Shavit, Nir},
617    title       = {The Art of Multiprocessor Programming},
618    year        = 2008,
619    isbn        = {0123705916, 9780123705914},
620    publisher   = {Morgan Kaufmann Publishers},
621    address     = {San Francisco},
622}
623
624@inproceedings{Chung10,
625    keywords    = {transactional memory, lock-free programming, x86 architecture},
626    contributer = {pabuhr@plg},
627    author      = {Jaewoong Chung and Luke Yen and Stephan Diestelhorst and Martin Pohlack and Michael Hohmuth and David Christie and Dan Grossman},
628    title       = {ASF: AMD64 Extension for Lock-Free Data Structures and Transactional Memory},
629    booktitle   = {Proceedings of the 2010 43rd Annual IEEE/ACM International Symposium on Microarchitecture},
630    series      = {MICRO '43},
631    year        = 2010,
632    pages       = {39--50},
633    numpages    = {12},
634    publisher   = {IEEE Computer Society},
635    address     = {Washington, DC, USA},
636}
637
638@article{Buhr94a,
639    keywords    = {assignment, parameter passing, multiple assignment},
640    contributer = {pabuhr@plg},
641    author      = {P. A. Buhr and David Till and C. R. Zarnke},
642    title       = {Assignment as the Sole Means of Updating Objects},
643    journal     = spe,
644    month       = sep,
645    year        = 1994,
646    volume      = 24,
647    number      = 9,
648    pages       = {835-870},
649}
650
651@inproceedings{Krischer08,
652    keywords    = {exception handling, asynchronous, blocked tasks},
653    contributer = {pabuhr@plg},
654    author      = {Roy Krischer and Peter A. Buhr},
655    title       = {Asynchronous Exception Propagation in Blocked Tasks},
656    booktitle   = {4th International Workshop on Exception Handling (WEH.08)},
657    organization= {16th International Symposium on the Foundations of Software Engineering (FSE 16)},
658    address     = {Atlanta, U.S.A},
659    month       = nov,
660    year        = 2008,
661    pages       = {8-15},
662}
663
664@article{Joung00,
665    author      = {Joung, Yuh-Jzer},
666    title       = {Asynchronous group mutual exclusion},
667    journal     = {Dist. Comput.},
668    optjournal  = {Distributed Computing},
669    year        = {2000},
670    month       = {Nov},
671    volume      = {13},
672    number      = {4},
673    pages       = {189--206},
674}
675
676@article{oop:modpascal,
677    keywords    = {ModPascal},
678    contributer = {gjditchfield@plg},
679    author      = {Walter G. Olthoff},
680    title       = {Augmentation of Object-Oriented Programming by Concepts of Abstract Data Type Theory: The ModPascal Experience},
681    journal     = sigplan,
682    volume      = 21,
683    number      = 11,
684    pages       = {429-443},
685    month       = nov,
686    year        = 1986
687}
688
689@inproceedings{Shen91,
690    keywords    = {Ada, polymorphism},
691    contributer = {pabuhr@plg},
692    author      = {Jun Shen and Gordon V. Cormack},
693    title       = {Automatic instantiation in Ada},
694    booktitle   = {Proceedings of the ACM Tri-Ada Conference},
695    organization= {ACM},
696    address     = {San Jose, California, U.S.A},
697    month       = oct,
698    year        = 1991,
699    pages       = {338-346},
700}
701
702@article{Havender68,
703    keywords    = {deadlock},
704    contributer = {pabuhr@plg},
705    author      = {J. W. Havender},
706    title       = {Avoiding Deadlock in Multitasking Systems},
707    journal     = ibmsj,
708    volume      = 7,
709    number      = 2,
710    year        = 1968,
711    pages       = {74-84},
712}
713
714% B
715
716@article{Michael13,
717    contributer = {pabuhr@plg},
718    author      = {Maged M. Michael},
719    title       = {The Balancing Act of Choosing Nonblocking Features},
720    journal     = cacm,
721    volume      = 56,
722    number      = 9,
723    month       = sep,
724    year        = 2013,
725    pages       = {46--53},
726    publisher   = {ACM},
727    address     = {New York, NY, USA},
728}
729
730@incollection{beta:old,
731    keywords    = {beta, patterns, virtual types},
732    contributer = {gjditchfield@plg},
733    author      = {Bent Bruun Kristensen and Ole Lehrmann Madsen and Birger M{\o}ller-Pedersen and Kristen Nygaard},
734    title       = {The BETA Programming Language},
735    booktitle   = {Research Directions in Object-Oriented Programming},
736    publisher   = {MIT Press},
737    series      = {Computer Systems Series},
738    year        = 1987,
739    pages       = {7-48},
740    editor      = {Bruce Shriver and Peter Wegner}
741}
742
743@article{Knudsen87,
744    keyword     = {static exception handling mechanism, BETA, sequel},
745    contributor = {wyrmok@plg},
746    author      = {J{\o}rgen Lindskov Knudsen},
747    title       = {Better Exception Handling in Block Structured Systems},
748    journal     = {IEEE Software},
749    year        = 1987,
750    month       = may,
751    volume      = 4,
752    number      = 3,
753    pages       = {40-49},
754    comments    = {
755        Going up the call hierarchy to look for a handler does not fit an
756        otherwise statically scoped language. Also, not knowing which handler
757        to be used when raising an abnormal event is seen as a weakness of the
758        (dynamic) exception handling mechanism. Knudsen believed that raising
759        an exception should specify the handler for the exception -- the
760        handler is chosen when the exception is raised.  However, I don't think
761        his scheme can solve the problem, especially with all the callback
762        routines commonly found in OO programming.
763
764        BETA exception handling mechanism uses his work as a foundation.
765        However, I don't see any benefits BETA has over other language that is
766        a direct consequence of Knudsen's work. On the other hand, my knowledge
767        on BETA is very limited.
768        }
769}
770
771@book{BCPL,
772    keywords    = {BCPL},
773    contributer = {pabuhr@plg},
774    author      = {M. Richards and C. Whitby-Strevens},
775    title       = {{BCPL} -- The Language and Its Compiler},
776    publisher   = {Cambridge University Press, Cambridge},
777    year        = 1979,
778}
779
780@incollection{Madsen87,
781    keywords    = {nested classes},
782    contributer = {pabuhr@watmsg},
783    author      = {Ole Lehrmann Madsen},
784    title       = {Block Structure and Object Oriented Languages},
785    booktitle   = {Research Directions in Object-Oriented Programming},
786    editor      = {Bruce Shriver and Peter Wegner},
787    publisher   = {MIT Press},
788    series      = {Computer Systems Series},
789    year        = 1987,
790    pages       = {113-128}
791}
792
793@inproceedings{booleanClasses,
794    keywords    = {specifications},
795    contributer = {gjditchfield@plg},
796    author      = {David McAllester and Ramin Zabih},
797    title       = {Boolean Classes},
798    crossref    = "OOPSLA86",
799    pages       = {417-423},
800    abstract    = {
801        We extend the notion of class so that any Boolean combination of
802        classes is also a class.  Boolean classes allow greater precision
803        and conciseness in naming the class of objects governed a
804        particular method [sic].  A class can be viewed as a predicate
805        which is either true or false of any given object.  Unlike
806        predicates however classes have an inheritance hierarchy which is
807        known at compile time.  Boolean classes extend the notion of class,
808        making classes more like predicates, while preserving the compile
809        time computable inheritance hierarchy.
810    },
811    comment     = {
812        Classes are predicates; if object {\tt o} is in class {\tt C}, then
813        {\tt C} is true of {\tt o}.  Classes are combined with {\tt :AND},
814        {\tt :OR}, and {\tt :NOT}.  Inheritance is treated as implication:
815        {\tt (:implies C E)} means that if class {\tt C} is true of {\tt
816        o}, class expression {\tt E} is true of {\tt o}, so if {\tt E} is a
817        class, it is a superclass of {\tt C}.  Some class expressions, i.e.
818        {\tt (:OR c1 c2)}, can't be instantiated.  Others, i.e. {\tt (:NOT
819        c)}, can't be given methods or members because almost all classes
820        would inherit them, violating modularity.  The rules for spotting
821        these problems are complex.  Determining if one class inherits from
822        another needs an exponential algorithm.
823    }
824}
825
826@misc{BoostCoroutines15,
827    keywords    = {Boost Coroutine Library},
828    contributer = {pabuhr@plg},
829    author      = {Oliver Kowalke},
830    title       = {Boost Coroutine Library},
831    year        = 2015,
832    howpublished= {\href{http://www.boost.org/doc/libs/1_61_0/libs/coroutine/doc/html/index.html}
833                  {{http://www.boost.org/\-doc/\-libs/1\_61\_0/\-libs/\-coroutine/\-doc/\-html/\-index.html}}},
834    optnote     = {Accessed: 2016-09},
835}
836
837@mastersthesis{Krischer02,
838    author      = {Roy Krischer },
839    title       = {Bound Exceptions in Object-Oriented Programming Languages},
840    school      = {Universit\"at Mannheim},
841    address     = {Mannheim, Deutschland},
842    year        = 2002,
843    month       = oct,
844    type        = {Diplomarbeit},
845    note        = {\href{https://plg.uwaterloo.ca/~usystem/theses/KrischerThesis.pdf}{https://\-plg.uwaterloo.ca/\-$\sim$usystem/\-theses/\-KrischerThesis.pdf}},
846}
847
848@inproceedings{Buhr03,
849    keywords    = {exception handling, bound handler},
850    contributer = {pabuhr@plg},
851    author      = {Peter A. Buhr and Roy Krischer},
852    title       = {Bound Exceptions in Object Programming},
853    booktitle   = {Proceedings of the ECOOP 2003 Workshop on Exception Handling in Object Oriented Systems:
854                  Towards Emerging Application Areas and New Programming Paradigms},
855    organization= {ECOOP},
856    address     = {Darmstadt, Germany},
857    month       = jul,
858    year        = 2003,
859    pages       = {20-26},
860}
861%    note       = {http://www.cs.umn.edu/research/technical_reports.php/listing/technical_reports.php?page=report&report_id=03-028}
862
863@inproceedings{Buhr06b,
864    keywords    = {exception handling, bound exceptions},
865    author      = {Peter A. Buhr and Roy Krischer},
866    title       = {Bound Exceptions in Object-Oriented Programming},
867    editor      = {C. Dony and J. L. Knudsen and A. Romanovsky and A. Tripathi},
868    booktitle   = {Advanced Topics in Exception Handling Techniques},
869    publisher   = {Springer},
870    series      = {Lecture Notes in Computer Science},
871    volume      = 4119,
872    year        = 2006,
873    pages       = {1-21}
874}
875
876% C
877
878@book{C,
879    keywords    = {C},
880    contributer = {pabuhr@plg},
881    author      = {Brian W. Kernighan and Dennis M. Ritchie},
882    title       = {The {C} Programming Language},
883    publisher   = {Prentice-Hall},
884    address     = {Englewood Cliffs},
885    year        = 1988,
886    edition     = {2nd},
887    series      = {Prentice-Hall Software Series},
888    comment     = {
889         based on draft-proposed ANSI C
890    }
891}
892
893@book{C:old,
894    keywords    = {C},
895    contributer = {pabuhr@plg},
896    author      = {Brian W. Kernighan and Dennis M. Ritchie},
897    title       = {The {C} Programming Language},
898    publisher   = {Prentice-Hall},
899    address     = {Englewood Cliffs},
900    year        = 1978,
901    edition     = {1st},
902}
903
904@manual{ANSI89:C,
905    keywords    = {ANSI C 89},
906    contributer = {gjditchfield@plg},
907    author      = {C90},
908    title       = {Programming Languages -- {C}},
909    organization= {American National Standards Institute},
910    address     = {New York, NY, U.S.A.},
911    year        = 1990,
912    note        = {ANSI/ISO 9899-1990}
913}
914
915@manual{C11,
916    keywords    = {ISO/IEC C 11},
917    contributer = {pabuhr@plg},
918    key         = {C11},
919    title       = {C Programming Language {ISO/IEC} 9889:2011-12},
920    edition     = {3rd},
921    publisher   = {International Standard Organization},
922    address     = {\href{https://www.iso.org/standard/57853.html}{https://\-www.iso.org/\-standard/\-57853.html}},
923    year        = 2012,
924}
925
926@manual{C++Concepts,
927    keywords    = {ISO/IEC TS 19217:2015},
928    contributer = {a3moss@uwaterloo.ca},
929    key         = {Concepts},
930    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming language -- Extensions for concepts {ISO/IEC} {TS} 19217:2015},
931    publisher   = {International Standard Organization},
932    address     = {\href{https://www.iso.org/standard/64031.html}{https://\-www.iso.org/\-standard/\-64031.html}},
933    year        = 2015,
934}
935
936@misc{Cforall,
937    contributer = {pabuhr@plg},
938    key         = {Cforall},
939    author      = {{\textsf{C}{$\mathbf{\forall}$} Features}},
940    howpublished= {\href{https://plg.uwaterloo.ca/~cforall/features}{https://\-plg.uwaterloo.ca/\-$\sim$cforall/\-features}},
941    optnote     = {Accessed: 2018-01-01},
942}
943
944@mastersthesis{Esteves04,
945    keywords    = {Cforall, parametric polymorphism, overloading},
946    contributer = {pabuhr@plg},
947    author      = {Rodolfo Gabriel Esteves},
948    title       = {\textsf{C}$\mathbf{\forall}$, a Study in Evolutionary Design in Programming Languages},
949    school      = {School of Computer Science, University of Waterloo},
950    year        = 2004,
951    address     = {Waterloo, Ontario, Canada, N2L 3G1},
952    note        = {\href{http://plg.uwaterloo.ca/theses/EstevesThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-EstevesThesis.pdf}},
953}
954
955@misc{CFAStackEvaluation,
956    contributer = {a3moss@plg},
957    author      = {Aaron Moss},
958    title       = {\textsf{C}$\mathbf{\forall}$ Stack Evaluation Programs},
959    year        = 2018,
960    howpublished= {\href{https://cforall.uwaterloo.ca/CFAStackEvaluation.zip}{https://cforall.uwaterloo.ca/\-CFAStackEvaluation.zip}},
961    optnote     = {[Accessed May 2018]},
962}
963
964@article{Moss18,
965    keywords    = {type systems, polymorphism, tuples, Cforall},
966    contributer = {pabuhr@plg},
967    author      = {Aaron Moss and Robert Schluntz and Peter A. Buhr},
968    title       = {\textsf{C}$\mathbf{\forall}$ : Adding Modern Programming Language Features to C},
969    journal     = spe,
970    volume      = 48,
971    number      = 12,
972    month       = dec,
973    year        = 2018,
974    pages       = {2111-2146},
975    note        = {\href{http://dx.doi.org/10.1002/spe.2624}{http://\-dx.doi.org/\-10.1002/\-spe.2624}},
976}
977
978@inproceedings{c++scheme,
979    keywords    = {},
980    contributer = {gjditchfield@plg},
981    author      = {Vincent F. Russo and Simon M. Kaplan},
982    title       = {A {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Interpreter for {S}cheme},
983    booktitle   = {Usenix {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
984    year        = 1988,
985    pages       = {95-108},
986    summary     = {
987        The SIOD interpreter for a Scheme subset, written in C, has a
988        tagged union representing data objects, and read(), eval(), and
989        print() functions that are basically large switch statements that
990        switch based on the tag.  The authors rewrote it to use a class
991        with virtual read(), eval(), and print() members, without changing
992        any algorithms.  The result was more modular, more easily
993        extensible, more reliable, and slightly faster.
994    },
995    comment     = {
996        The evidence given is thin.
997    },
998}
999
1000@article{doskernel,
1001    keywords    = {light weight processes},
1002    contributer = {gjditchfield@plg},
1003    author      = {Tom Green},
1004    title       = {A {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Multitasking Kernel},
1005    journal     = {Dr. Dobb's Journal of Software Tools},
1006    year        = 1989,
1007    month       = feb,
1008    volume      = 14,
1009    number      = 2,
1010    pages       = {45-51},
1011    comment     = {
1012       A light-weight multitasking kernel for MS-DOS.  A task\_control
1013       object holds task objects, which may block themselves on signal
1014       objects.  Task switching is normally preemptive, but tasks can turn
1015       off preemption before calling non-reentrant routines.  Source code
1016       is given.
1017    }
1018}
1019
1020@inproceedings{Doeppner87,
1021    keywords    = {concurrency},
1022    contributer = {pabuhr@plg},
1023    author      = {Thomas W. Doeppner and Alan J. Gebele},
1024    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} on a Parallel Machine},
1025    booktitle   = {Proceedings and Additional Papers {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Workshop},
1026    organization= {USENIX Association},
1027    address     = {Santa Fe, New Mexico, U.S.A},
1028    month       = nov,
1029    year        = 1987,
1030    pages       = {94-107},
1031}
1032
1033@book{Lippman91,
1034    keywords    = {C++},
1035    contributer = {pabuhr@plg},
1036    author      = {Stanley B. Lippman},
1037    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Primer},
1038    publisher   = {Addison-Wesley},
1039    address     = {Boston},
1040    year        = 1991,
1041    edition     = {2nd},
1042    note        = {QA76.73.C15L57},
1043}
1044
1045@book{c++:v1,
1046    keywords    = {C++},
1047    contributer = {gjditchfield@plg},
1048    author      = {Bjarne Stroustrup},
1049    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
1050    publisher   = {Addison-Wesley},
1051    address     = {Boston},
1052    year        = 1986,
1053    edition     = {1st},
1054    series      = {Addison-Wesley Series in Computer Science}
1055}
1056
1057@book{c++:v2,
1058    keywords    = {C++},
1059    contributer = {pabuhr@plg},
1060    author      = {Bjarne Stroustrup},
1061    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
1062    publisher   = {Addison-Wesley},
1063    address     = {Boston},
1064    year        = 1991,
1065    edition     = {2nd},
1066}
1067
1068@book{c++:v3,
1069    keywords    = {C++},
1070    contributer = {pabuhr@plg},
1071    author      = {Bjarne Stroustrup},
1072    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
1073    publisher   = {Addison Wesley Longman},
1074    year        = 1997,
1075    edition     = {3rd},
1076}
1077
1078@manual{Csharp,
1079    keywords    = {C#},
1080    contributer = {pabuhr@plg},
1081    title       = {C\# Language Specification, Standard ECMA-334},
1082    organization= {ECMA International Standardizing Information and Communication Systems},
1083    month       = jun,
1084    year        = 2006,
1085    edition     = {4th},
1086}
1087
1088@article{Buhr85,
1089    keywords    = {goto, multi-exit loop},
1090    contributer = {pabuhr@plg},
1091    author      = {P. A. Buhr},
1092    title       = {A Case for Teaching Multi-exit Loops to Beginning Programmers},
1093    journal     = sigplan,
1094    volume      = 20,
1095    number      = 11,
1096    month       = nov,
1097    year        = 1985,
1098    pages       = {14-22}
1099}
1100
1101@inproceedings{Necula02,
1102    author      = {Necula, George C. and McPeak, Scott and Weimer, Westley},
1103    title       = {{CCured}: Type-safe Retrofitting of Legacy Code},
1104    booktitle   = {Proceedings of the 29th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages},
1105    series      = {POPL '02},
1106    year        = {2002},
1107    location    = {Portland, Oregon},
1108    pages       = {128-139},
1109    publisher   = {ACM},
1110    address     = {New York, NY, USA},
1111}
1112
1113@techreport{cforall-ug,
1114    keywords    = {cforall, user guide},
1115    contributer = {pabuhr@plg},
1116    author      = {Peter A. Buhr and Glen Ditchfield and David Till and Charles R. Zarnke},
1117    title       = {\textsf{C}$\mathbf{\forall}$ Users Guide, Version 0.1},
1118    institution = {Department of Computer Science, University of Waterloo},
1119    address     = {Waterloo, Ontario, Canada, N2L 3G1},
1120    month       = oct,
1121    year        = 2001,
1122    note        = {\href{http://plg.uwaterloo.ca/~cforall/cfa.ps}{http://\-plg.uwaterloo.ca/\-$\sim$cforall/\-cfa.ps}},
1123}
1124
1125@manual{cforall-refrat,
1126    keywords    = {polymorphism},
1127    contributer = {gjditchfield@plg},
1128    author      = {Glen Ditchfield},
1129    title       = {Cforall Reference Manual and Rationale},
1130    edition     = {Revision 1.82},
1131    month       = jan,
1132    year        = 1998,
1133    note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-Cforall/\-refrat.ps.gz}}},
1134}
1135
1136@Inproceedings{Tarditi18,
1137    keywords = {Checked C},
1138    contributer = {a3moss@uwaterloo.ca},
1139    author = {Tarditi, David and Elliott, Archibald Samuel and Ruef, Andrew and Hicks, Michael},
1140    title = {Checked C: Making C Safe by Extension},
1141    year = {2018},
1142    month = {September},
1143    publisher = {IEEE},
1144    url = {https://www.microsoft.com/en-us/research/publication/checkedc-making-c-safe-by-extension/},
1145    pages = {53-60},
1146}
1147
1148@misc{Clang,
1149    keywords = {clang},
1150    contributer = {a3moss@uwaterloo.ca},
1151    title = {Clang: a {C} language family frontend for {LLVM}},
1152    howpublished = {\href{https://clang.llvm.org/}{https://\-clang.llvm.org/}},
1153    note = {Accessed 2019-02-22}
1154}
1155
1156@book{Yourdon79,
1157    keywords    = {software engineering},
1158    contributer = {pabuhr@plg},
1159    editor      = {Edward Nash Yourdon},
1160    title       = {Classics in Software Engineering},
1161    publisher   = {Yourdon Press},
1162    address     = {New York},
1163    year        = 1979,
1164}
1165
1166@inproceedings{Crnogorac98,
1167    keywords    = {inheritance anomaly},
1168    contributer = {pabuhr@plg},
1169    author      = {Lobel Crnogorac and Anand S. Rao and Kotagiri Ramamohanarao},
1170    title       = {Classifying Inheritance Mechanisms in Concurrent Object-Oriented Programming},
1171    editor      = {Eric Jul},
1172    booktitle   = {{ECOOP}~'98---Object-Oriented Programming},
1173    series      = {Lecture Notes in Computer Science},
1174    publisher   = {Springer},
1175    volume      = 1445,
1176    year        = 1998,
1177    pages       = {571-601},
1178    ISBN        = {3-540-64737-6},
1179    ISSN        = {0302-9743},
1180    abstract    = {
1181        Inheritance is one of the key concepts in object-oriented rogramming. However, the
1182        usefulness of inheritance in concurrent object-oriented programming is greatly
1183        reduced by the problem of inheritance anomaly. Inheritance anomaly is manifested
1184        by undesirable re-definitions of inherited code. The problem is aggravated by the
1185        lack of a formal analysis, with a multitude of differing proposals and conflicting
1186        opinions causing the current state of research, and further directions, to be
1187        unclear. In this paper we present a formal analysis of inheritance anomaly in
1188        concurrent object-oriented programming. Starting from a formal definition of the
1189        problem we develop a taxonomy of the anomaly, and use it to classify the various
1190        proposals. As a result, the major ideas, trends and limitations of the various
1191        proposals are clearly exposed. Formal analysis of the anomaly and a thorough
1192        exposition of its causes and implications are the pre-requisites for a successful
1193        integration of inheritance and concurrency.
1194    },
1195}
1196
1197@book{CLU,
1198    keywords    = {CLU},
1199    contributer = {gjditchfield@plg},
1200    author      = {Barbara Liskov and Russell Atkinson and Toby Bloom and Eliot
1201                Moss and J. Craig Schaffert and Robert Scheifler and Alan Snyder},
1202    title       = {CLU Reference Manual},
1203    publisher   = {Springer},
1204    address     = {New York},
1205    year        = 1981,
1206    volume      = 114,
1207    series      = {Lecture Notes in Computer Science}
1208}
1209
1210@manual{Cobol14,
1211    keywords    = {ISO/IEC Cobol 14},
1212    contributer = {pabuhr@plg},
1213    author      = {Cobol14},
1214    title       = {Programming Languages -- {Cobol} ISO/IEC 1989:2014},
1215    edition     = {2nd},
1216    institution = {International Standard Organization},
1217    address     = {\href{https://www.iso.org/standard/51416.html}{https://\-www.iso.org/\-standard/\-51416.html}},
1218    year        = 2014,
1219}
1220
1221@article{coagulation,
1222    keywords    = {register allocation, instruction selection, jello},
1223    contributer = {gjditchfield@plg},
1224    author      = {Michael Karr},
1225    title       = {Code Generation by Coagulation},
1226    journal     = sigplan,
1227    year        = 1984,
1228    month       = jun,
1229    volume      = 19,
1230    number      = 6,
1231    pages       = {1-12},
1232    note        = {Proceedings of the ACM SIGPLAN '84 Symposium on Compiler Construction},
1233    abstract    = {
1234        This paper describes a new approach to code-generation.  The
1235        central tenet is that there must be a more intimate coupling
1236        between register allocation and instruction selection than exists
1237        in present-day technology.  This is achieved by generating code in
1238        very small regions and gradually coalescing the part of the program
1239        that is ``compiled''.
1240    },
1241}
1242
1243@article{Soloway83,
1244    keywords    = {goto, structure programming},
1245    contributer = {pabuhr@plg},
1246    author      = {E. Soloway and J. Bonar and K. Ehrlich},
1247    title       = {Cognitive Strategies and Looping Constructs: An Empirical Study},
1248    journal     = cacm,
1249    month       = nov,
1250    year        = 1983,
1251    volume      = 26,
1252    number      = 11,
1253    pages       = {853-860},
1254}
1255
1256@book{sml:commentary,
1257    author      = {Robin Milner and Mads Tofte},
1258    title       = {Commentary on Standard {ML}},
1259    publisher   = {MIT Press},
1260    address     = {Cambridge},
1261    year        = 1991
1262}
1263
1264@article{Hyman66,
1265    keywords    = {mutual exclusion, software solution, incorrect},
1266    contributer = {pabuhr@plg},
1267    author      = {Harris Hyman},
1268    title       = {Comments on a Problem in Concurrent Programming Control},
1269    journal     = cacm,
1270    month       = jan,
1271    year        = 1966,
1272    volume      = 9,
1273    number      = 1,
1274    pages       = {45},
1275    note        = {Letter to the Editor}
1276}
1277
1278@inproceedings{clos,
1279    keywords    = {},
1280    contributer = {gjditchfield@plg},
1281    author      = {Linda G. DeMichiel and Richard P. Gabriel},
1282    title       = {The Common Lisp Object System: An Overview},
1283    booktitle   = {ECOOP '87. European Conference on Object-Oriented Programming},
1284    year        = 1987,
1285    pages       = {151-170},
1286    publisher   = {Springer}
1287}
1288
1289@book{CommonLisp,
1290    keywords    = {common lisp},
1291    contributer = {pabuhr@plg},
1292    author      = {Guy Steele},
1293    title       = {COMMON LISP: The Language},
1294    publisher   = {Digital Press},
1295    address     = {New York},
1296    year        = 1984
1297}
1298
1299@article{CommonLoops,
1300    author      = {D. Bobrow and K. Kahn and G. Kiczales and L. Masinter and M. Stefik and F. Zdybel},
1301    title       = {CommonLoops: Merging Common Lisp and Object-Oriented Programming},
1302    address     = {Portland, Oregon, U.S.A.},
1303    journal     = {Proc. ACM Conf. on Object-Oriented Systems, Languages and Applications},
1304    year        = 1986,
1305    month       = sep,
1306    pages       = {17-29},
1307}
1308
1309@article{co-overview,
1310    keywords    = {CommonObjects, implementation, encapsulation},
1311    contributer = {gjditchfield@plg},
1312    author      = {Alan Snyder},
1313    title       = {CommonObjects: An Overview},
1314    journal     = sigplan,
1315    year        = 1986,
1316    month       = oct, volume = 21, number = 10, pages = {19-28},
1317    note        = {Object Oriented Programming Workshop}
1318}
1319
1320@article{CSP,
1321    keywords    = {CSP, concurrency},
1322    contributer = {pabuhr@plg},
1323    author      = {C. A. R. Hoare},
1324    title       = {Communicating Sequential Processes},
1325    journal     = cacm,
1326    month       = aug,
1327    year        = 1978,
1328    volume      = 21,
1329    number      = 8,
1330    pages       = {666-677}
1331}
1332
1333@book{Hoare85,
1334    author      = {C. A. R. Hoare},
1335    title       = {Communicating Sequential Processes},
1336    year        = 1985,
1337    isbn        = {0-13-153271-5},
1338    publisher   = {Prentice-Hall},
1339    address     = {Upper Saddle River, NJ, USA},
1340    note        = {\href{http://www.usingcsp.com/cspbook.pdf}{http://\-www.usingcsp.com/\-cspbook.pdf}},
1341}
1342
1343@article{Hansen72a,
1344    keywords    = {monitors, automatic signal},
1345    contributer = {pabuhr@plg},
1346    author      = {Per {Brinch Hansen}},
1347    title       = {A Comparison of Two Synchronizing Concepts},
1348    journal     = acta,
1349    volume      = 1,
1350    year        = 1972,
1351    pages       = {190-199},
1352}
1353
1354@book{Aho06,
1355    author      = {Alfred V. Aho and Monica S. Lam and Ravi Sethi and Jeffrey D. Ullman},
1356    title       = {Compilers: Principles, Techniques, and Tools},
1357    edition     = {2nd},
1358    year        = {2006},
1359    publisher   = {Addison-Wesley Longman Publishing},
1360    address     = {Boston, MA, USA},
1361}
1362
1363@article{Bacon94,
1364    keywords    = {parallelizing compiler},
1365    contributer = {pabuhr@plg},
1366    author      = {David F. Bacon and Susan L. Graham and Oliver J. Sharp},
1367    title       = {Compiler Transformations for High-Performance Com\-puting},
1368    journal     = acmcs,
1369    volume      = 26,
1370    number      = 4,
1371    month       = dec,
1372    year        = 1994,
1373    pages       = {345-420},
1374}
1375
1376@inproceedings{Berger01,
1377    author      = {Emery D. Berger and Benjamin G. Zorn and Kathryn S. McKinley},
1378    title       = {Composing High-Performance Memory Allocators},
1379    booktitle   = {{SIGPLAN} Conference on Programming Language Design and Implementation},
1380    pages       = {114-124},
1381    year        = 2001,
1382    url         = {http://citeseer.ist.psu.edu/berger01composing.html}
1383} 
1384
1385@article{Andrews83,
1386    keywords    = {general concurrency},
1387    contributer = {pabuhr@plg},
1388    author      = {Gregory R. Andrews and Fred B. Schneider},
1389    title       = {Concepts and Notations for Concurrent Programming},
1390    journal     = acmcs,
1391    volume      = 15,
1392    number      = 1,
1393    month       = mar,
1394    year        = 1983,
1395    pages       = {3-43},
1396}
1397
1398@mastersthesis{Mok97,
1399    author      = {Wing Yeung Russell Mok},
1400    title       = {Concurrent Abnormal Event Handling Mechanisms},
1401    school      = {University of Waterloo},
1402    year        = 1997,
1403    month       = sep,
1404    address     = {Waterloo, Ontario, Canada, N2L 3G1},
1405    note        = {\href{http://plg.uwaterloo.ca/theses/MokThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-MokThesis.pdf}},
1406}
1407
1408@article{Gehani86,
1409    keywords    = {Concurrent programming, C, Distributed systems, rendezvous},
1410    contributer = {dgharriss@plg},
1411    author      = {N. H. Gehani and W. D. Roome},
1412    title       = {{Concurrent C}},
1413    journal     = spe,
1414    volume      = 16,
1415    number      = 9,
1416    month       = sep,
1417    year        = 1986,
1418    pages       = {821-844},
1419    abstract    = {
1420        Our objective is to enhance C so that it can be used to write
1421        concurrent programs that can run efficiently on both single computers
1422        and multicomputers.  Our concurrent programming extensions to C are
1423        based on the {\it rendezvous\/} concept.  These extensions include
1424        mechanisms for the declaration and creation of processes, for process
1425        synchronization and interaction, for process termination and abortion.
1426        We give a rationale for our decisions and compare Concurrent C
1427        extensions with the concurrent programming facilities in Ada.
1428        Concurrent C has been implemented on the UNIX system running on a
1429        single processor.  A distributed version of Concurrent C is being
1430        implemented.
1431   },
1432   comment      = {
1433        Select with guarded and screened accepts.  Typed processes.
1434        Process-valued expressions and process variables.  Processes have
1435        execution priority: Create {\em process-type-name}(args) [with
1436        priority(p)], and the priority can be changed on the fly.  Complicated
1437        guard/screen structure on accept: accept {\em transaction}(param names)
1438        [suchthat (exp)] [by (exp)] [compoundstatement].  Accepts cannot
1439        appear in functions!  Can specify timeouts on transaction calls.
1440        Code examples: buffer process, dining philosophers, lock manager.
1441        Section on diffs between Concurrent C and Ada.
1442   }
1443}
1444
1445@article{ConcurrentC++,
1446    keywords    = {concurrency, C++},
1447    contributer = {pabuhr@plg},
1448    author      = {N. H. Gehani and W. D. Roome},
1449    title       = {Concurrent {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}: Concurrent Programming with Class(es)},
1450    journal     = spe,
1451    month       = dec,
1452    year        = 1988,
1453    volume      = 18,
1454    number      = 12,
1455    pages       = {1157-1177}
1456}
1457
1458@article{Courtois71,
1459    keywords    = {reader and writer, p and v},
1460    contributer = {pabuhr@plg},
1461    author      = {P. J. Courtois and F. Heymans and D. L. Parnas},
1462    title       = {Concurrent Control with Readers and Writers},
1463    journal     = cacm,
1464    volume      = 14,
1465    number      = 10,
1466    month       = oct,
1467    year        = 1971,
1468    pages       = {667-668},
1469    annote      = {
1470                Many errors in the two solutions.
1471    }
1472}
1473
1474@misc{NThreadCode13,
1475    keywords    = {N-thread software-solution mutual exclusion},
1476    contributer = {pabuhr@plg},
1477    key         = {concurrent locking},
1478    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
1479    title       = {concurrent-locking},
1480    howpublished= {\href{https://github.com/pabuhr/concurrent-locking}{https://\-github.com/\-pabuhr/\-concurrent-locking}},
1481    optnote     = {[Accessed April 2017]},
1482}
1483
1484@incollection{Reppy93,
1485    keywords    = {ML, concurrency, continuation passing},
1486    contributer = {pabuhr@plg},
1487    author      = {John H. Reppy},
1488    title       = {Concurrent {ML}: Design, Application and Semantics},
1489    booktitle   = {Functional Programming, Concurrency, Simulation and Automated Reasoning},
1490    editor      = {P. E. Lauer},
1491    pages       = {165-198},
1492    publisher   = {Springer},
1493    address     = {Berlin, DE},
1494    year        = 1993,
1495    ISBN        = {3-540-56883-2},
1496    abstract    = {
1497        Concurrent ML (CML) is a high-level language for concurrent
1498        programming. It is an extension of Standard ML (SML) and is implemented
1499        on top of Standard ML of New Jersey (SML/NJ). CML is a practical
1500        language and is being used to build real systems. It demonstrates that
1501        one need not sacrifice high-level notation in order to have good
1502        performance. CML is also a well-defined language. In the tradition of
1503        SML, it has a formal semantics and its type-soundness has been
1504        proven.},
1505    note        = {
1506        Proceedings of International Lecture Series 1991-92, McMaster
1507        UniversityLecture Notes in Computer Science 693.},
1508}
1509
1510@article{BLASE-2,
1511    keywords    = {concurrency, BLASE-2},
1512    contributer = {pabuhr@plg},
1513    author      = {Piyush Mehrotra and John Van Rosendale},
1514    title       = {Concurrent Object Access in BLASE~2},
1515    journal     = sigplan,
1516    volume      = 24,
1517    number      = 4,
1518    month       = apr,
1519    year        = 1989,
1520    pages       = {40-42},
1521    note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming,
1522                   Sept. 26--27, 1988, San Diego, California, U.S.A},
1523}
1524
1525@techreport{Kafura88,
1526    keywords    = {objects, concurrency},
1527    contributer = {pabuhr@plg},
1528    author      = {Dennis Kafura},
1529    title       = {Concurrent Object-Oriented Real-Time Systems Research},
1530    institution = {Department of Computer Science, Virginia Polytechnic},
1531    number      = {TR 88-47},
1532    year        = 1988
1533}
1534
1535@article{Buhr92a,
1536    keywords    = {C++, concurrency, light-weight process, shared memory},
1537    contributer = {pabuhr@plg},
1538    author      = {P. A. Buhr and Glen Ditchfield and R. A. Stroobosscher and B. M. Younger and C. R. Zarnke},
1539    title       = {$\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}: Concurrency in the Object-Oriented Language {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
1540    journal     = spe,
1541    volume      = 22,
1542    number      = 2,
1543    month       = feb,
1544    year        = 1992,
1545    pages       = {137-172},
1546}
1547
1548@manual{uC++,
1549    keywords    = {C++, concurrency, light-weight process, shared memory},
1550    contributer = {pabuhr@plg},
1551    key         = {uC++},
1552    author      = {Peter A. Buhr},
1553    title       = {$\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Annotated Reference Manual, Version 7.0.0},
1554    organization= {University of Waterloo},
1555    month       = sep,
1556    year        = 2018,
1557    note        = {\href{https://plg.uwaterloo.ca/~usystem/pub/uSystem/uC++.pdf}{https://\-plg.uwaterloo.ca/\-$\sim$usystem/\-pub/\-uSystem/uC++.pdf}},
1558}
1559
1560@book{Burns93,
1561    keywords    = {concurrency, Pascal},
1562    contributer = {pabuhr@plg},
1563    author      = {Alan Burns and Geoff Davies},
1564    title       = {Concurrent Programming},
1565    publisher   = {Addison Wesley Longman},
1566    year        = 1993,
1567}
1568
1569@article{Hansen73a,
1570    keywords    = {monitors},
1571    contributer = {pabuhr@plg},
1572    author      = {Per {Brinch Hansen}},
1573    title       = {Concurrent Programming Concepts},
1574    journal     = spe,
1575    month       = dec,
1576    year        = 1973,
1577    volume      = 5,
1578    number      = 4,
1579    pages       = {223-245},
1580}
1581
1582@book{Lea97,
1583    keywords    = {concurrency, Java},
1584    contributer = {pabuhr@plg},
1585    author      = {Doug Lea},
1586    title       = {Concurrent Programming in {J}ava: Design Principles and Patterns},
1587    publisher   = {Addison-Wesley},
1588    address     = {Boston},
1589    year        = 1997,
1590    edition     = {1st},
1591}
1592
1593@book{Hartley98,
1594    keywords    = {concurrency, Java},
1595    contributer = {pabuhr@plg},
1596    author      = {Stephen J. Hartley},
1597    title       = {Concurrent Programming: The {J}ava Programming Language},
1598    publisher   = {Oxford University Press},
1599    year        = 1998,
1600    edition     = {1st},
1601}
1602
1603@book{Lea00,
1604    keywords    = {concurrency, Java},
1605    contributer = {pabuhr@plg},
1606    author      = {Doug Lea},
1607    title       = {Concurrent Programming in {J}ava: Design Principles and Patterns},
1608    publisher   = {Addison-Wesley},
1609    address     = {Boston},
1610    year        = 2000,
1611    edition     = {2nd},
1612}
1613
1614@book{ConcurrentC,
1615    keywords    = {concurrency, C},
1616    contributer = {pabuhr@plg},
1617    author      = {N. H. Gehani and W. D. Roome},
1618    title       = {The {Concurrent C} Programming Language},
1619    publisher   = {Silicon Press},
1620    address     = {Summit},
1621    year        = 1989,
1622}
1623
1624@mastersthesis{Sun15,
1625    author      = {Sun, Xianda},
1626    title       = {Concurrent High-performance Persistent Hash Table In {J}ava},
1627    school      = {School of Computer Sc., University of Waterloo},
1628    year        = 2015,
1629    optaddress  = {Waterloo, Ontario, Canada, N2L 3G1},
1630    note        = {\href{https://uwspace.uwaterloo.ca/handle/10012/10013}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-10013}},
1631}
1632
1633@book{Andrews91:book,
1634    keywords    = {concurrency},
1635    contributer = {pabuhr@plg},
1636    author      = {Gregory R. Andrews},
1637    title       = {Concurrent Programming: Principles and Practice},
1638    publisher   = {Benjamin/Cummings Publish\-ing},
1639    address     = {Redwood City},
1640    year        = 1991,
1641}
1642
1643@article{Buhr05a,
1644    keywords    = {concurrency, myths},
1645    contributer = {pabuhr@plg},
1646    author      = {Peter A. Buhr and Ashif S. Harji},
1647    title       = {Concurrent Urban Legends},
1648    journal     = ccpe,
1649    month       = aug,
1650    year        = 2005,
1651    volume      = 17,
1652    number      = 9,
1653    pages       = {1133-1172},
1654}
1655
1656@mastersthesis{Delisle18,
1657    keywords    = {concurrency, Cforall},
1658    contributer = {pabuhr@plg},
1659    author      = {Thierry Delisle},
1660    title       = {Concurrency in \textsf{C}$\mathbf{\forall}$},
1661    school      = {School of Computer Science, University of Waterloo},
1662    year        = 2018,
1663    optaddress  = {Waterloo, Ontario, Canada, N2L 3G1},
1664    note        = {\href{https://uwspace.uwaterloo.ca/handle/10012/12888}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-12888}},
1665}
1666
1667@article{Delisle18b,
1668    keywords    = {concurrency, Cforall},
1669    contributer = {pabuhr@plg},
1670    author      = {Thierry Delisle and Peter A. Buhr},
1671    title       = {Concurrency in \textsf{C}$\mathbf{\forall}$},
1672    year        = 2018,
1673    journal     = spe,
1674    pages       = {1-32},
1675    note        = {submitted},
1676}
1677
1678@techreport{Buhr90,
1679    keywords    = {objects, concurrency},
1680    contributer = {gjditchfield@plg},
1681    author      = {P. A. Buhr and G. J. Ditchfield and B. M. Younger and C. R. Zarnke}, 
1682    title       = {Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
1683    institution = {Department of Computer Science, University of Waterloo},
1684    address     = {Waterloo, Ontario, Canada, N2L 3G1},
1685    number      = {CS-90-18},
1686    month       = may,
1687    year        = 1990
1688}
1689
1690@book{Burns98,
1691    keywords    = {concurrency, Ada},
1692    author      = {Alan Burns and Andy Wellings},
1693    title       = {Concurrency in {Ada}},
1694    publisher   = {Cambridge University Press},
1695    year        = 1998,
1696    edition     = {2nd},
1697}
1698
1699@book{Bernstein93,
1700    keywords    = {concurrency},
1701    author      = {Arthur J. Bernstein and Philip M. Lewis},
1702    title       = {Concurrency in Programming and Database Systems},
1703    publisher   = {Jones and Bartlett},
1704    year        = 1993,
1705}
1706
1707@inproceedings{Pitman01,
1708    keywords    = {LISP, exception handling},
1709    contributer = {pabuhr@plg},
1710    author      = {Kent M. Pitman},
1711    title       = {Condition Handling in the Lisp Language Family},
1712    booktitle   = {Exception Handling},
1713    publisher   = {Springer},
1714    volume      = 2022,
1715    series      = {LNCS},
1716    year        = 2001,
1717    pages       = {39-59}
1718}
1719
1720@inbook{enhancement,
1721    keywords    = {bounded polymorphism, Comandos},
1722    contributer = {gjditchfield@plg},
1723    author      = {Chris Horn},
1724    title       = {Conformace, Genericity, Inheritance and Enhancement},
1725    pages       = {223-233},
1726    publisher   = {Springer},
1727    year        = 1987,
1728    volume      = 276,
1729    series      = "Lecture Notes in Computer Science",
1730    note        = "ECOOP '87 European Conference on Object-Oriented Programming",
1731    summary     = {
1732        Considers effect of conformance on Meyer's conclusions in
1733        \cite{polymorphism}.
1734
1735        Implementing a swap function as a member of a type {\cd Swappable}
1736        with {\cd in out Top} parameters doesn't work, because conformance
1737        requires arguments to be of type {\cd Top}.
1738
1739        An enhancive type has a type parameter, bounded by some type, and
1740        defines members.  Types conforming to the bound can be passed as
1741        arguments to create types with the extra members.  The signature of
1742        the enhanced type is based on the signature of the argument, not the
1743        bound, as if enhancive types were macros.  Hence enhanced types do not
1744        necessarily conform to each other.  Types conforming to the bound
1745        conform to enhanced types, which allows new functions to be applied
1746        to old types.
1747
1748        Enhancive types are not generic types.  If the argument is omitted,
1749        the bound is used as a default.  Assignment of enhanced types to
1750        default-enhanced types is allowed (enhanced types conform to the
1751        default-enhanced type).  This is (probably) statically type-safe,
1752        because arguments must conform to the bound, and the new members
1753        only use operations defined for the bound.
1754
1755        With facilities for member renaming and deletion, enhancive types
1756        provide the equivalent of constrained generic types.
1757    }
1758}
1759
1760@misc{Taylor10,
1761    keywords    = {const, poisoning},
1762    contributer = {pabuhr@plg},
1763    author      = {Ian Lance Taylor},
1764    title       = {const},
1765    month       = oct,
1766    year        = 2010,
1767    howpublished= {\href{https://www.airs.com/blog/archives/428}
1768                  {https://www.airs.com/\-blog/\-archives/\-428}},
1769    optnote     = {Accessed: 2018-05},
1770}
1771
1772@phdthesis{Ditchfield92,
1773    keywords    = {C, parametric polymorphism, overloading},
1774    contributer = {pabuhr@plg},
1775    author      = {Glen Jeffrey Ditchfield},
1776    title       = {Contextual Polymorphism},
1777    school      = {Department of Computer Science, University of Waterloo},
1778    year        = 1992,
1779    address     = {Waterloo, Ontario, Canada, N2L 3G1},
1780    note        = {\href{http://plg.uwaterloo.ca/theses/DitchfieldThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-DitchfieldThesis.pdf}}
1781}
1782
1783@inproceedings{frameworks:HHG90,
1784    keywords    = {formal},
1785    contributer = {pabuhr@plg},
1786    author      = {Richard Helm and Ian M. Holland and Dipayan Gangopadhyay},
1787    title       = {Contracts: Specifying Behavioural Compositions in Cbject-Oriented Systems},
1788    booktitle   = {Proceedings of ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications},
1789    year        = 1990,
1790    pages       = {169-180},
1791}
1792
1793@article{Wand80,
1794    keywords    = {concurrency, continuation},
1795    contributer = {pabuhr@plg},
1796    author      = {Mitchell Wand},
1797    title       = {Continuation-Based Multiprocessing},
1798    publisher   = {The Lisp Conference},
1799    journal     = {Conference Record of the 1980 Lisp Conference},
1800    pages       = {19-28},
1801    year        = 1980,
1802}
1803
1804@article{Hieb90,
1805    keywords    = {continuations, concurrency},
1806    contributer = {pabuhr@plg},
1807    author      = {Robert Hieb and R. Kent Dybvig},
1808    title       = {Continuations and Concurrency},
1809    journal     = sigplan,
1810    volume      = 25,
1811    number      = 3,
1812    month       = mar,
1813    year        = 1990,
1814    pages       = {128-136},
1815    note        = {Proceedings of the Second ACM SIGPLAN Symposium on Principles \& Practise of Parallel Programming,
1816                   March. 14--16, 1990, Seattle, Washington, U.S.A},
1817}
1818
1819@inproceedings{Haynes84,
1820    keywords    = {continuations, coroutines, Scheme},
1821    contributer = {pabuhr@plg},
1822    author      = {Christopher T. Haynes and Daniel P. Friedman and Mitchell Wand},
1823    title       = {Continuations and Coroutines},
1824    booktitle   = {Conference Record of the 1984 {ACM} Symposium on Lisp and Functional Programming},
1825    organization= {Association for Computing Machinery},
1826    month       = aug,
1827    year        = 1984,
1828    pages       = {293-298},
1829    abstract    = {
1830        The power of first class continuations is demonstrated by implementing
1831        a variety of coroutine mechanisms using only continuations and
1832        functional abstraction. The importance of general abstraction
1833        mechanisms such as continuations is discussed.},
1834}
1835
1836@inproceedings{Zahn74,
1837    keywords    = {goto, structured programming},
1838    contributer = {pabuhr@plg},
1839    author      = {C. T. Zahn},
1840    title       = {Control Statement for Natural Top-down Structured Programming},
1841    booktitle   = {Symposium on Programming Languages},
1842    address     = {Paris, France},
1843    year        = 1974,
1844}
1845
1846@unpublished{Ditchfield:conversions,
1847    contributer = {a3moss@uwaterloo.ca},
1848    author      = {Glen Ditchfield},
1849    title       = {Conversions for \textsf{C}$\mathbf{\forall}$},
1850    note        = {\href{http://plg.uwaterloo.ca/~cforall/Conversions/index.html}{http://\-plg.uwaterloo.ca/\-$\sim$cforall/\-Conversions/\-index.html}},
1851    month       = {Nov},
1852    year        = {2002},
1853    urldate     = {28 July 2016},
1854}
1855
1856@techreport{Dijkstra65,
1857    keywords    = {concurrency, Dekker's algorithm, semaphores},
1858    contributer = {pabuhr@plg},
1859    author      = {Edsger W. Dijkstra},
1860    title       = {Cooperating Sequential Processes},
1861    institution = {Technological University},
1862    address     = {Eindhoven, Netherlands},
1863    year        = 1965,
1864    note        = {Reprinted in \cite{Genuys68} pp. 43--112.}
1865}
1866
1867@book{Marlin80,
1868    keywords    = {coroutines},
1869    contributer = {pabuhr@plg},
1870    author      = {Christopher D. Marlin},
1871    title       = {Coroutines: A Programming Methodology, a Language Design and an Implementation},
1872    publisher   = {Springer},
1873    address     = {New York},
1874    year        = 1980,
1875    volume      = 95,
1876    series      = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis}
1877}
1878 
1879@article{Wang71,
1880    keywords    = {coroutines},
1881    contributer = {pabuhr@plg},
1882    author      = {Arne Wang and Ole-Johan Dahl},
1883    title       = {Coroutine Sequencing in a Block Structured Environment},
1884    journal     = "BIT",
1885    volume      = 11,
1886    month       = nov,
1887    year        = 1971,
1888    pages       = {425-449},
1889}
1890 
1891@article{Castagna95,
1892    keywords    = {type-systems, covariance, contravariance},
1893    contributer = {pabuhr@plg},
1894    author      = {Giuseppe Castagna},
1895    title       = {Covariance and Contravariance : Conflict without a Cause},
1896    journal     = toplas,
1897    volume      = 17,
1898    number      = 3,
1899    month       = may,
1900    year        = 1995,
1901    pages       = {341-447},
1902}
1903
1904@book{Fischer88,
1905    keywords    = {compiler construction},
1906    author      = {Charles N. Fischer and Richard J. {LeBlanc, Jr.}},
1907    title       = {Crafting a Compiler},
1908    publisher   = {Benjamin Cummings},
1909    year        = 1991,
1910}
1911
1912@misc{CS343,
1913    keywords    = {uC++ teaching},
1914    contributer = {pabuhr@plg},
1915    key         = {Peter Buhr},
1916    title       = {CS343},
1917    year        = 2018,
1918    howpublished= {\href{https://www.student.cs.uwaterloo.ca/~cs343}{https://\-www.student.cs.uwaterloo.ca/\-$\sim$cs343}},
1919}
1920
1921@inproceedings{Jim02,
1922    keywords    = {C dialect, parametric polymorphic, safe memory allocation},
1923    contributer = {pabuhr@plg},
1924    author      = {Trevor Jim and Greg Morrisett and Dan Grossman and Michael Hicks and James Cheney and and Yanling Wang},
1925    title       = {{C}yclone: A Safe Dialect of {C}},
1926    booktitle   = {USENIX Annual Technical Conference},
1927    organization= {USENIX Association},
1928    address     = {Monterey, California, U.S.A.},
1929    month       = jun,
1930    year        = 2002,
1931    pages       = {275-288},
1932}
1933
1934% D
1935
1936@manual{D,
1937    keywords    = {D programming language},
1938    contributer = {pabuhr@plg},
1939    title       = {{D} Programming Language},
1940    author      = {Walter Bright and Andrei Alexandrescu},
1941    organization= {Digital Mars},
1942    year        = 2016,
1943    note        = {\href{http://dlang.org/spec/spec.html}{http://\-dlang.org/\-spec/\-spec.html}},
1944}
1945
1946@techreport{Cui90,
1947    keywords    = {exception handling},
1948    contributer = {pabuhr@plg},
1949    author      = {Qian Cui},
1950    title       = {Data-Oriented Exception Handling},
1951    institution = {Department of Computer Science, University of Maryland},
1952    address     = {College Park, Maryland, U.S.A., 20742},
1953    number      = {CS-TR-2384},
1954    month       = jan,
1955    year        = 1990,
1956}
1957
1958@article{Cui92,
1959    contributer = {rkrische@plg},
1960    author      = {Qian Cui and John Gannon},
1961    title       = {Data-oriented Exception Handling},
1962    journal     = {IEEE Transactions on Software Engineering},
1963    month       = may,
1964    year        = 1992,
1965    volume      = 18,
1966    number      = 5,
1967    pages       = {393-401},
1968}
1969
1970@manual{SIMULA87,
1971    keywords    = {Simula standard},
1972    contributer = {gjditchfield@plg},
1973    title       = {Databehandling -- Programspr{\aa}k -- {SIMULA}},
1974    organization= {Standardiseringskommissionen i Sverige},
1975    note        = {Svensk Standard SS 63 61 14},
1976    year        = 1987,
1977    abstract    = {Standard for the programming language SIMULA. Written in English.}
1978}
1979
1980@article{Galil91,
1981    keywords    = {union-find},
1982    contributer = {a3moss@uwaterloo.ca},
1983    title       = {Data structures and algorithms for disjoint set union problems},
1984    author      = {Galil, Zvi and Italiano, Giuseppe F},
1985    journal     = {ACM Computing Surveys (CSUR)},
1986    volume      = 23,
1987    number      = 3,
1988    pages       = {319--344},
1989    year        = 1991,
1990    publisher   = {ACM},
1991}
1992
1993@article{Liskov75,
1994    keywords    = {abstract data types, encapsulation, verification},
1995    contributer = {gjditchfield@plg},
1996    author      = {Barbara H. Liskov},
1997    title       = {Data Types and Program Correctness},
1998    journal     = sigplan,
1999    year        = 1975,
2000    month       = jul,
2001    volume      = 10,
2002    number      = 7,
2003    pages       = {16-17},
2004    summary     = {
2005        Type definitions should contain the implementation of the type and
2006        its operations.  The grouping makes programs simpler and more
2007        understandable.  Encapsulating the definition aids verification and
2008        forces a precise specification of the interface.
2009    }
2010}
2011
2012@article{dtav,
2013    keywords    = {Russell, types},
2014    contributer = {gjditchfield@plg},
2015    author      = {James Donahue and Alan Demers},
2016    title       = {Data Types are Values},
2017    journal     = toplas,
2018    month       = jul,
2019    year        = 1985,
2020    volume      = 7,
2021    number      = 3,
2022    pages       = {426-445},
2023    comment     = {
2024        Data types are sets of operations providing interpretations of
2025        values from a meaningless, typeless universal value space.  Types
2026        and operations are also contained in this value space.
2027
2028        Functions returning types replace generic types.
2029
2030        Polymorphic functions have type parameters.  Evaluation is not
2031        macro expansion:
2032        \begin{verbatim}
2033            R == func [n:val integer; T:type[]] val integer
2034                {if n > 0 => r[n-1, Array[1,10,T]] # n <= 0 => 17 fi}
2035        \end{verbatim}
2036    }
2037}
2038
2039@article{Holt72,
2040    keywords    = {concurrency, deadlock},
2041    contributer = {pabuhr@plg},
2042    author      = {Richard C. Holt},
2043    title       = {Some Deadlock Properties of Computer Systems},
2044    journal     = acmcs,
2045    volume      = 4,
2046    number      = 3,
2047    month       = sep,
2048    year        = 1972,
2049    pages       = {179-196},
2050}
2051
2052@misc{debug-malloc,
2053    keywords    = {memory allocation debugger},
2054    contributer = {gjditchfield@plg},
2055    author      = {Conor P. Cahill},
2056    title       = {debug\_malloc},
2057    howpublished= {comp.sources.unix, volume 22, issue 112},
2058    abstract    = {
2059        This package is a collection of routines which are a drop-in
2060        replacement for the malloc(3), memory(3), string(3), and bstring(3)
2061        library functions.
2062    }
2063}
2064
2065@book{sml,
2066    keywords    = {},
2067    contributer = {pabuhr@plg},
2068    author      = {Robin Milner and Mads Tofte and Robert Harper},
2069    title       = {The Definition of Standard {ML}},
2070    publisher   = {MIT Press},
2071    address     = {Cambridge},
2072    year        = 1990
2073}
2074
2075@techreport{sml:old,
2076    keywords    = {},
2077    contributer = {gjditchfield@plg},
2078    author      = {Robert Harper and Robin Milner and Mads Tofte},
2079    title       = {The Definition of Standard {ML}, Version 2},
2080    institution = {Department of Computer Science, University of Edinburgh},
2081    year        = 1988,
2082    address     = {The King's Buildings, Edinburgh EH9 3JZ},
2083    type        = {LFCS Report Series}, month = aug, number = {ECS-LFCS-88-62}
2084}
2085
2086@inproceedings{Reynolds72,
2087    keywords    = {continuation},
2088    contributer = {pabuhr@plg},
2089    author      = {John Reynolds},
2090    title       = {Definitional Interpreters for Higher Order Programming Languages},
2091    booktitle   = {ACM Conference Proceedings},
2092    organization= {ACM},
2093    year        = 1972,
2094    pages       = {717-740}
2095}
2096
2097@article{Buhr16,
2098    keywords    = {Dekker's algorithm, software solution, mutual exclusion, performance experiment},
2099    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
2100    title       = {Dekker's Mutual Exclusion Algorithm Made RW-Safe},
2101    journal     = ccpe,
2102    volume      = 28,
2103    number      = 1,
2104    pages       = {144-165},
2105    month       = jan,
2106    year        = 2016,
2107}
2108
2109@misc{steelman,
2110    keywords    = {Ada},
2111    contributer = {gjditchfied@plg},
2112    author      = {High Order Language Working Group},
2113    title       = {Department of Defense Requirements for High Order Computer Programming Languages},
2114    month       = jun, year = 1978,
2115    note        = {Reprinted in \cite{pldesign}.}
2116}
2117
2118@incollection{Tsay98,
2119    keywords    = {local spins, mutual exclusion, read/write atomicity, refinement, scalability},
2120    author      = {Yih-Kuen Tsay},
2121    title       = {Deriving a scalable algorithm for mutual exclusion},
2122    booktitle   = {Distributed Computing},
2123    editor      = {Shay Kutten},
2124    volume      = {1499},
2125    series      = {LNCS},
2126    publisher   = {Springer},
2127    address     = {Berlin Heidelberg},
2128    year        = {1998},
2129    pages       = {393-407},
2130}
2131
2132@book{Aho74,
2133    keywords    = {algorithms, textbook, union-find},
2134    contributer = {a3moss@uwaterloo.ca},
2135    title       = {The Design and Analysis of Computer Algorithms},
2136    author      = {Aho, Alfred V and Hopcroft, John E and Ullman, Jeffrey D},
2137    year        = {1974},
2138    publisher   = {Addison-Wesley},
2139    address     = {Reading, MA, USA}
2140}
2141
2142@article{Conway63,
2143    keywords    = {coroutine, original},
2144    contributer = {pabuhr@plg},
2145    author      = {Melvin E. Conway},
2146    title       = {Design of a Separable Transition-Diagram Compiler},
2147    journal     = cacm,
2148    month       = jul,
2149    year        = 1963,
2150    volume      = 6,
2151    number      = 7,
2152    pages       = {396-408},
2153}
2154
2155@book{Stroustrup94,
2156    keywords    = {C++},
2157    contributor = {wyrmok@plg},
2158    author      = {Bjarne Stroustrup},
2159    title       = {The Design and Evolution of {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
2160    publisher   = {Addison-Wesley},
2161    address     = {Boston},
2162    year        = 1994
2163}
2164
2165@inproceedings{st:concurrent,
2166    keywords    = {concurrency, Smalltalk, futures},
2167    contributer = {gjditchfield@plg},
2168    author      = {Yasuhiko Yokote and Mario Tokoro},
2169    title       = {The Design and Implementation of {ConcurrentSmalltalk}},
2170    crossref    = "OOPSLA86",
2171    pages       = {331-340},
2172    comment     = {
2173        Objects are ordinary Smalltalk objects or ``atomic'' objects, which
2174        process messages one at a time in FIFO order.  Asynchronous method
2175        calls are made by appending ``\&'' at the call site.  The sender does
2176        not wait for a reply.  If the method returns a value, it
2177        (immediately?) returns a CBox object, which is like a future.  The
2178        sender can send the ``receive'' message to the CBox, which blocks
2179        until the CBox contains a value.
2180
2181        A method can execute the ``\verb|^|'' statement to return an object
2182        and terminate, or it can execute ``\verb|^^|'' to return an object
2183        and continue execution.  If ``\verb|^^foo|'' is executed after
2184        ``\verb|^^bar|'', foo is discarded, since bar has already been
2185        returned.
2186
2187        The article does not say whether asynchronous messages can be sent
2188        to ordinary objects, or whether ordinary messages can be sent to
2189        atomic objects.
2190    }
2191}
2192
2193@inproceedings{Ichbiah83,
2194    keywords    = {Ada, packages, generics},
2195    contributer = {gjditchfield@plg},
2196    author      = {Jean D. Ichbiah},
2197    title       = {On the Design of {Ada}},
2198    booktitle   = {Information Processing 83},
2199    year        = 1983,
2200    month       = sep, pages = {1-10},
2201    editor      = {R. E. A. Mason},
2202    organization= {IFIP},
2203    publisher = {North-Holland},
2204    summary = {
2205        Packages group related declarations or subprograms, and encapsulate
2206        data types.  Separate interfaces and bodies promotes information
2207        hiding by removing the need to scan the body, allows the body to be
2208        confidential, and provides a better specification of the contract
2209        between client and implementor.  Generics are an efficient way to
2210        factor out parts of similar definitions.
2211    }
2212}
2213
2214@book{Motet96,
2215    keywords    = {Ada, exception handling},
2216    contributer = {wyrmok@plg},
2217    author      = {G. Motet and A. Mapinard and J. C. Geoffroy},
2218    title       = {Design of Dependable {A}da Software},
2219    publisher   = {Prentice-Hall},
2220    address     = {Englewood Cliffs},
2221    year        = 1996,
2222}
2223 
2224@article{Richardson93,
2225    keywords    = {C++, persistence, database},
2226    contributer = {pabuhr@plg},
2227    author      = {Joel E. Richardson and Michael J. Carey and Daniel T. Schuh},
2228    title       = {The Design of the {E} Programming Language},
2229    journal     = toplas,
2230    month       = jul,
2231    year        = 1993,
2232    volume      = 15,
2233    number      = 3,
2234    pages       = {494-534},
2235}
2236
2237@article{Hansen81b,
2238    keywords    = {concurrency, monitor, critical region},
2239    contributer = {pabuhr@plg},
2240    author      = {Per {Brinch Hansen}},
2241    title       = {The Design of {E}dison},
2242    journal     = spe,
2243    volume      = 11,
2244    number      = 4,
2245    month       = apr,
2246    year        = 1981,
2247    pages       = {363-396},
2248}
2249
2250@book{Gamma95,
2251    keywords    = {design patterns},
2252    author      = {Erich Gamma and Richard Helm and Ralph Johnson and John Vlissides},
2253    title       = {Design Patterns: Elements of Reusable Object-Oriented Software},
2254    publisher   = {Addison-Wesley},
2255    address     = {Boston},
2256    year        = 1995,
2257    series      = {Professional Computing Series},
2258}
2259
2260@inproceedings{Wirth74,
2261    keywords    = {},
2262    contributer = {gjditchfield@plg},
2263    author      = {Niklaus Wirth},
2264    title       = {On the Design of Programming Languages},
2265    booktitle   = {Information Processing 74},
2266    year        = 1974,
2267    pages       = {386-393},
2268    publisher   = {North Holland Publishing Company},
2269    note        = {Reprinted in \cite{pldesign}.}
2270}
2271
2272@techreport{forceone,
2273    keywords    = {Parametric polymorphism, ForceOne},
2274    contributer = {gjditchfield@plg},
2275    author      = {Andrew K. Wright},
2276    title       = {Design of the Programming Language {ForceOne}},
2277    institution = {University of Waterloo},
2278    month       = feb, year = 1987,
2279    number      = {CS-87-10}
2280}
2281
2282@techreport{x-2,
2283    keywords    = {object based},
2284    contributer = {gjditchfield@plg},
2285    author      = {David W. Sandberg},
2286    title       = {The Design of the Programming Language {X-2}},
2287    institution = {Oregon State University},
2288    year        = 1985,
2289    address     = {Department of Computer Science, Corvallis, Oregon, 97331},
2290    number      = {85-60-1}
2291}
2292
2293@article{design,
2294    keywords    = {Smalltalk, designing classes},
2295    contributer = {gjditchfield@plg},
2296    author      = {Ralph E. Johnson and Brian Foote},
2297    title       = {Designing Reusable Classes},
2298    journal     = joop,
2299    year        = 1988,
2300    volume      = 1, number = 2, pages = {22-35},
2301    comment     = {
2302        Abstract classes represent standard protocols.  ``It is better to
2303        inherit from an abstract class than from a concrete class''.
2304        Frameworks are collections of related abstract classes.  Successful
2305        abstractions are discovered, not designed.
2306
2307        Protocols: ``If an operation X is implemented by performing a
2308        similar operation on the components of the receiver, then that
2309        operation should also be named X''.  Eliminate case analysis by
2310        creating classes with the same operations.  Create classes to
2311        represent bundles of parameters.  Shrink methods larger than 30
2312        lines.
2313
2314        Hierarchies should be deep and narrow.  Subclasses should be
2315        specializations.
2316
2317        Frameworks: split large classes.  Factor implementation differences
2318        into subcomponents.  Separate methods that do not share instance
2319        variables into components that reflect the different views of the
2320        object.  Send messages to components, not self.  Reduce implicit
2321        parameter passing through instance variables.
2322    }
2323}
2324
2325@article{dim:c++,
2326    keywords    = {Dimensional Analysis, C++},
2327    contributer = {gjditchfield@plg},
2328    author      = {Robert F. Cmelic and Narain Gehani},
2329    title       = {Dimensional Analysis with {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
2330    journal     = {IEEE Software},
2331    month       = may, year = 1988,
2332    volume      = 5, number = 3, pages = {21-29}
2333}
2334
2335@article{Wegner87,
2336    contributer = {pabuhr@plg},
2337    author      = {Peter Wegner},
2338    title       = {Dimensions of Object--Based Language Design},
2339    journal     = sigplan,
2340    volume      = 22,
2341    number      = 12,
2342    month       = dec,
2343    year        = 1987,
2344    pages       = {168-182},
2345    note        = {Proceedings of the OOPSLA'87 Conference, Oct. 4--8, 1987, Orlando, Florida},
2346}
2347
2348@book{Dijkstra76,
2349    keywords    = {concurrent assignment},
2350    author      = {E. W. Dijkstra},
2351    title       = {A Discipline of Programming},
2352    publisher   = {Prentice-Hall},
2353    address     = {Englewood Cliffs},
2354    year        = 1976,
2355}
2356
2357@book{Lynch96,
2358    keywords    = {distributed algorithms},
2359    author      = {Nancy A. Lynch},
2360    title       = {Distributed Algorithms},
2361    publisher   = {Morgan Kaufmann},
2362    year        = 1996,
2363}
2364
2365@book{Tanenbaum02,
2366    keywords    = {distributed programming},
2367    author      = {Andrew S. Tanenbaum and Maarten van Steen},
2368    title       = {Distributed Systems: Principles and Paradigms},
2369    publisher   = {Prentice-Hall},
2370    address     = {Englewood Cliffs},
2371    year        = 2002,
2372}
2373
2374@inproceedings{Cargill90,
2375    keywords    = {concurrency},
2376    contributer = {pabuhr@plg},
2377    author      = {Tom A. Cargill},
2378    title       = {Does {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Really Need Multiple Inheritance?},
2379    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference Proceedings},
2380    organization= {USENIX Association},
2381    address     = {San Francisco, California, U.S.A.},
2382    month       = apr,
2383    year        = 1990,
2384    pages       = {315-323}
2385}
2386
2387@misc{Dotty-github,
2388    keywords = {dotty,scala},
2389    contributer = {a3moss@uwaterloo.ca},
2390    author = {Martin Odersky},
2391    title = {Dotty},
2392    howpublished = {\href{https://github.com/lampepfl/dotty}{https://\-github.com/\-lampepfl/\-dotty}},
2393    note = {Acessed: 2019-02-22}
2394}
2395
2396@unpublished{Duff83,
2397    keywords    = {C, switch statement, control flow},
2398    contributer = {pabuhr@plg},
2399    author      = {Tom Duff},
2400    title       = {Duff's Device},
2401    month       = nov,
2402    year        = 1983,
2403    note        = {\href{http://www.lysator.liu.se/c/duffs-device.html}{http://\-www.lysator.liu.se/\-c/\-duffs-device.html}}
2404}
2405
2406@manual{dwarf2,
2407    keywords    = {Debugging DWARF2 specification},
2408    contributer = {rkrische@plg},
2409    title       = {DWARF Debugging Information Format},
2410    organization= {Unix International Programming Languages SIG},
2411    publisher   = {Unix International},
2412    address     = {Waterview Corporate Center, 20 Waterview Boulevard, Parsippany, NJ 07054},
2413    year        = {1993}
2414}
2415
2416@article{classicada,
2417    keywords    = {Classic Ada},
2418    contributer = {gjditchfield@plg},
2419    author      = {Cameron M. Donaldson},
2420    title       = {Dynamic Binding and Inheritance in an Object-Oriented {Ada} Design},
2421    journal     = {Journal of Pascal, {Ada} \& Modula-2},
2422    year        = 1990,
2423    month       = {jul/aug}, volume = 9, number = 4, pages = {12-19},
2424    comment     = {
2425        Classes are like packages: they can contain subprograms, types,
2426        variables, generic instantiations, and exceptions.  They can also
2427        contain class methods, instance methods, and instance variables,
2428        and define creation and initialization subprograms or methods for
2429        instances.  Single inheritance provides inheritance of
2430        implementations. Dynamic binding is done with a {\em send}
2431        statement that invokes a class or instance method.  A preprocessor
2432        converts Classic Ada to normal Ada.
2433    }
2434}
2435
2436@article{Costanza03,
2437    keywords    = {dynamic call},
2438    contributer = {pabuhr@plg},
2439    author      = {Pascal Costanza},
2440    title       = {Dynamic Scoped Functions as the Essence of {AOP}},
2441    journal     = sigplan,
2442    volume      = 38,
2443    number      = 8,
2444    month       = aug,
2445    year        = 2003,
2446    pages       = {29-35},
2447}
2448
2449% E
2450
2451@inproceedings{Wegbreit71,
2452    keywords    = {polymorphism},
2453    contributer = {pabuhr@plg},
2454    author      = {B. Wegbreit},
2455    title       = {The ECL Programming System},
2456    booktitle   = {Proceedings of AFIPS 1971 FJCC},
2457    publisher   = {AFIPS Press, vol. 39},
2458    address     = {Montvale, New Jersey, U.S.A},
2459    year        = 1971,
2460    pages       = {253-262},
2461}
2462
2463@manual{JavaScript,
2464    keywords    = {JavaScript},
2465    contributer = {pabuhr@plg},
2466    title       = {ECMAScript 2015 Language Specification {JavaScript}},
2467    organization= {ECAM International},
2468    address     = {Rue du Rhone 114, CH-1204 Geneva, Switzerland},
2469    month       = jun,
2470    year        = 2015,
2471    note        = {6th Edition}
2472}
2473
2474@inproceedings{Peterson77,
2475    keywords    = {N-thread software-solution mutual exclusion},
2476    contributer = {pabuhr@plg},
2477    author      = {Gary L. Peterson and Michael J. Fischer},
2478    title       = {Economical Solutions for the Critical Section Problem in a Distributed System (Extended Abstract)},
2479    booktitle   = {Proceedings of the Ninth Annual ACM Symposium on Theory of Computing},
2480    series      = {STOC '77},
2481    year        = 1977,
2482    location    = {Boulder, Colorado, USA},
2483    pages       = {91--97},
2484    numpages    = {7},
2485    publisher   = {ACM},
2486    address     = {New York, NY, USA},
2487}
2488
2489@article{Hansen81a,
2490    keywords    = {concurrency, monitor, critical region},
2491    contributer = {pabuhr@plg},
2492    author      = {Per {Brinch Hansen}},
2493    title       = {{E}dison---a Multiprocessor Language},
2494    journal     = spe,
2495    volume      = 11,
2496    number      = 4,
2497    month       = apr,
2498    year        = {1981},
2499    pages       = {325-361},
2500}
2501
2502@article{Tarjan75,
2503 keywords = {union-find},
2504 contributer = {a3moss@uwaterloo.ca},
2505 author = {Tarjan, Robert Endre},
2506 title = {Efficiency of a Good But Not Linear Set Union Algorithm},
2507 journal = {J. ACM},
2508 issue_date = {April 1975},
2509 volume = {22},
2510 number = {2},
2511 month = apr,
2512 year = {1975},
2513 issn = {0004-5411},
2514 pages = {215--225},
2515 numpages = {11},
2516 url = {http://doi.acm.org/10.1145/321879.321884},
2517 doi = {10.1145/321879.321884},
2518 acmid = {321884},
2519 publisher = {ACM},
2520 address = {New York, NY, USA},
2521} 
2522
2523@book{Eiffel,
2524    keywords    = {Eiffel},
2525    contributer = {pabuhr@plg},
2526    author      = {Bertrand Meyer},
2527    title       = {Eiffel: The Language},
2528    publisher   = {Prentice-Hall},
2529    address     = {Englewood Cliffs},
2530    year        = 1992,
2531    series      = {Prentice-Hall Object-Oriented Series},
2532}
2533
2534@article{WS:overload,
2535    keywords    = {compilation},
2536    contributer = {gjditchfield@plg},
2537    author      = {Peter J. L. Wallis and Bernhard W. Silverman},
2538    title       = {Efficient Implementation of the {Ada} Overloading Rules},
2539    journal     = ipl,
2540    year        = 1980,
2541    month       = apr, volume = 10, number = 3, pages = {120-123},
2542    comment     = {
2543        The ``two-pass'' algorithm.  An upward pass over a parse tree
2544        calculates the set of possible result types of operators.  The
2545        root must have exactly one type, produced in one way.  A
2546        downward pass selects the version of the operator that produces the
2547        desired result type, thus setting the result types of subtrees.
2548        See \cite{D:overload}.
2549    }
2550}
2551
2552@techreport{Habermann80,
2553    keywords    = {Ada, threads},
2554    contributer = {pabuhr@plg},
2555    author      = {A. N. Habermann and I. R. Nassi},
2556    title       = {Efficient Implementation of {Ada} Tasks},
2557    institution = {Carnegie-Mellon University},
2558    number      = {CMU-CS-80-103},
2559    year        = 1980
2560}
2561
2562@article{Emerald,
2563    keywords    = {concurrency, polymorphism},
2564    contributer = {pabuhr@plg},
2565    author      = {Rajendra K. Raj and Ewan Tempero and Henry M. Levy and Andrew P. Black and Norman C. Hutchinson and Eric Jul},
2566    title       = {Emerald: A General-Purpose Programming Language},
2567    journal     = spe,
2568    month       = jan,
2569    year        = 1991,
2570    volume      = 21,
2571    number      = 1,
2572    pages       = {91-118}
2573}
2574
2575@InProceedings{chambers89a,
2576    keywords    = {maps, delegation},
2577    author      = "Craig Chambers and David Ungar and Elgin Lee",
2578    title       = "An Efficient Implementation of {SELF}, a Dynamically-Typed
2579                 Object-Oriented Language Based on Prototypes",
2580    crossref    = "OOPSLA89",
2581    pages       = {49-70}
2582}
2583
2584@article{oop:encapsulation,
2585    keywords    = {Encapsulation, Inheritance, Subclasses, Multiple Inheritance},
2586    contributer = {gjditchfield@plg},
2587    author      = {Alan Snyder},
2588    title       = {Encapsulation and Inheritance in Object-Oriented Programming
2589        Languages},
2590    journal     = sigplan,
2591    volume      = {21},    number = {11},
2592    pages       = {38-45},
2593    month       = nov, year = 1986,
2594    comment     = {
2595        Client, child interfaces should be distinct.  Child interface
2596        shouldn't grant total access to parent.
2597
2598        Rules for redefining parent variable name in a child affect
2599        re-implementation of the parent.
2600
2601        Inheritance can be a promise to obey the semantics of the parent,
2602        or code reuse; the two may be contradictory.  Unification
2603        exposes use of inheritance: a child can not be re-implemented
2604        without breaking code that assumes that it is a subclass of the
2605        original parent.  If a class uses the names of its parents'
2606        ancestors, then inheritance is part of the parent's child
2607        interface.
2608
2609        Linearizing a multiple inheritance tree means that a class's use of
2610        calls on super need to be understood before it is used as a parent.
2611        Merging repeated ancestors exposes inheritance if an ancestor is
2612        re-implemented.  Forbidding inheritance of distinct methods with
2613        the same name exposes implementation of ancestors.  Proposed
2614        solution treats the set of ancestors as a tree.
2615    }
2616}
2617
2618@article{st:encapsulator,
2619    keywords    = {encapsulator, Smalltalk, monitor},
2620    contributer = {gjditchfield@plg},
2621    author      = {Geoffrey A. Pascoe},
2622    title       = {Encapsulators: A New Software Paradigm in Smalltalk-80},
2623    journal     = sigplan,
2624    volume      = {21},    number       = {11},
2625    pages       = {341-346},
2626    month       = nov, year = 1986,
2627    comment     = {
2628        Encapsulators are objects that surround other objects.
2629        Pre- and post-actions are performed when messages are sent to the
2630        encapsulated object.  They are created here by sending the message
2631        object: to an encapsulator class.  Examples given are monitors,
2632        atomic objects, and Model (for model-view-controller interfaces).
2633
2634        Encapsulator classes use a family of selectors that the
2635        encapsulated object will not respond to.  Messages for the
2636        encapsulated object are passed on by trapping them with the
2637        doesNotUnderstand method.  Various fiddles were needed when setting
2638        up the class and metaclass hierarchies.  A few selectors (==,
2639        class) always directly invoke primitive methods; they can't be
2640        used.
2641
2642        Can an encapsulated object be an encapsulator?  Probably, but the
2643        middle object's selectors are inaccessible.
2644    }
2645}
2646
2647@manual{EPT,
2648    keywords    = {concurrency, light-weight threads},
2649    contributer = {pabuhr@plg},
2650    key         = {Encore},
2651    title       = {Encore Parallel Thread Manual, 724-06210},
2652    organization= {Encore Computer Corporation},
2653    month       = may,
2654    year        = 1988,
2655}
2656
2657@manual{Erlang,
2658    keywords    = {Erlang},
2659    contributer = {pabuhr@plg},
2660    key         = {Erlang},
2661    title       = {Erlang/OTP System Documentation 8.1},
2662    organization= {Erlang AB},
2663    month       = sep,
2664    year        = 2016,
2665    note        = {\href{http://erlang.org/doc/pdf/otp-system-documentation.pdf}{http://\-erlang.org/\-doc/\-pdf/\-otp-system-documentation.pdf}},
2666}
2667
2668@inproceedings{MH88,
2669    keywords    = {modules, general sums, general products},
2670    contributer = {gjditchfield@plg},
2671    author      = {John C. Mitchell and Robert Harper},
2672    title       = {The Essence of {ML}},
2673    booktitle   = popl,
2674    year        = 1988,
2675    pages       = {28-46}
2676}
2677
2678@book{LeVerrand,
2679    keywords    = {},
2680    author      = {D. Le Verrand},
2681    title       = {Evaluating {Ada}},
2682    publisher   = {North Oxford Academic},
2683    year        = 1985
2684}
2685
2686@inproceedings{Bloom79,
2687    keywords    = {concurrency},
2688    contributer = {pabuhr@plg},
2689    author      = {Toby Bloom},
2690    title       = {Evaluating Synchronization Mechanisms},
2691    booktitle   = {Proceedings of the Seventh Symposium on Operating Systems Principles},
2692    organization= {ACM SIGOPS},
2693    address     = {Pacific Grove, California, U.S.A},
2694    month       = dec,
2695    year        = 1979,
2696    pages       = {24-32}
2697}
2698
2699@inproceedings{XaaS,
2700    keywords    = {Everything as a Service, Anything as a Service, Cloud computing, SOA},
2701    contributer = {pabuhr@plg},
2702    author      = {Duan, Yucong and Fu, Guohua and Zhou, Nianjun and Sun, Xiaobing and Narendra, Nanjangud C. and Hu, Bo},
2703    title       = {Everything As a Service (XaaS) on the Cloud: Origins, Current and Future Trends},
2704    booktitle   = {Proceedings of the 2015 IEEE 8th International Conference on Cloud Computing},
2705    series      = {CLOUD'15},
2706    year        = {2015},
2707    pages       = {621--628},
2708    publisher   = {IEEE Computer Society},
2709    address     = {Washington, DC, USA},
2710}
2711
2712@article{Buhr06a,
2713    keywords    = {concurrency, C++, uC++},
2714    contributer = {pabuhr@plg},
2715    author      = {Peter A. Buhr and Richard C. Bilson},
2716    title       = {Examining $\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} :
2717                   High-level Object-Oriented Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
2718    journal     = {Dr. Dobb's Journal : Software Tools for the Professional Programmer},
2719    month       = feb,
2720    year        = 2006,
2721    volume      = 31,
2722    number      = 2,
2723    pages       = {36-40},
2724}
2725
2726@article{ExceptionalC,
2727    keywords    = {exception handling, asynchronous events},
2728    contributer = {wyrmok@plg},
2729    author      = {N. H. Gehani},
2730    title       = {Exceptional {C} or {C} with Exceptions},
2731    journal     = spe,
2732    year        = 1992,
2733    month       = oct,
2734    volume      = 22,
2735    number      = 10,
2736    pages       = {827-848},
2737    comment     = {
2738        It is the most extensive exceptional handling mechanism thus
2739        far. Though it doesn't have Mesa resumption, it has
2740        asynchronous signal which is more general and abstract than
2741        the unix signal mechanism.  It has an Eiffel like retry
2742        mechanism. Consequently, the scope of guarded region is not
2743        immediately terminated when an exception is raised. In fact,
2744        an exception handler creates a scope under its guarded
2745        region.
2746        }
2747}
2748
2749@incollection{Buhr02,
2750    keywords    = {exception handling},
2751    contributer = {pabuhr@plg},
2752    author      = {Peter A. Buhr and Ashif Harji and W. Y. Russell Mok},
2753    title       = {Exception Handling},
2754    editor      = {Marvin V. Zelkowitz},
2755    booktitle   = {Advances in COMPUTERS},
2756    publisher   = {Academic Press},
2757    address     = {London},
2758    volume      = 56,
2759    year        = 2002,
2760    pages       = {245-303},
2761}
2762
2763@article{Cargill94,
2764    keywords    = {exception handling},
2765    contributer = {pabuhr@plg},
2766    author      = {Tom Cargill},
2767    title       = {Exception Handling: a False Sense of Security},
2768    journal     = {{C}{\kern-.2em\hbox{\large\texttt{+\kern-.2em+}}} Report},
2769    year        = 1994,
2770    month       = nov,
2771    volume      = 6,
2772    number      = 9,
2773    note        = {http://www.informit.com/\-content/\-images/\-020163371x/\-supplements/\-Exception\_\-Handling\_\-Article.\-html}
2774}
2775
2776@article{Knudsen84,
2777    keywords    = {static exception handling, BETA, sequel},
2778    contributer = {wyrmok@plg},
2779    author      = {J{\o}rgen Lindskov Knudsen},
2780    title       = {Exception Handling --- A Static Approach},
2781    journal     = spe,
2782    year        = 1984,
2783    month       = may,
2784    volume      = 14,
2785    number      = 5,
2786    pages       = {429-449},
2787}
2788
2789@article{Drew94,
2790    keywords    = {exceptions, exception handling},
2791    contributer = {wyrmok@plg},
2792    author      = {Steven J. Drew and K. John Gough},
2793    title       = {Exception Handling: Expecting the Unexpected},
2794    journal     = {Computer Languages},
2795    year        = 1994,
2796    month       = may,
2797    volume      = 20,
2798    number      = 2,
2799    comment     = {
2800        A recent and good survey on various exception handling mechanisms found
2801        in imperative programming languages. It classifies various mechanism in
2802        terms of flow control and scopes. Asynchronous exceptions and signals
2803        are also covered as Exceptional C is in the survey.
2804        }
2805}
2806
2807@article{Koenig90,
2808    keywords    = {exception handling},
2809    contributer = {pabuhr@plg},
2810    author      = {Andrew Koenig and Bjarne Stroustrup},
2811    title       = {Exception Handling for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
2812    journal     = joop,
2813    month       = {July/August},
2814    year        = 1990,
2815    volume      = 3,
2816    number      = 2,
2817    pages       = {16-33},
2818}
2819
2820@article{Lee83,
2821    keywords    = {exception handling, C},
2822    contributer = {pabuhr@plg},
2823    author      = {P. A. Lee},
2824    title       = {Exception Handling in {C} Programs},
2825    journal     = spe,
2826    volume      = 13,
2827    number      = 5,
2828    month       = may,
2829    year        = 1983,
2830    pages       = {389-405},
2831}
2832
2833@article{Liskov79,
2834    keywords    = {exception handling},
2835    contributer = {pabuhr@plg},
2836    author      = {Barbara H. Liskov and Alan Snyder},
2837    title       = {Exception Handling in {CLU}},
2838    journal     = ieeese,
2839    month       = nov,
2840    year        = 1979,
2841    volume      = {SE-5},
2842    number      = 6,
2843    pages       = {546-558},
2844}
2845
2846@article{Szalas85,
2847    keywords    = {concurrency, C++},
2848    contributer = {pabuhr@plg},
2849    author      = {Andrzej Szalas and Danuta Szczepanska},
2850    title       = {Exception Handling in Parallel Computations},
2851    journal     = sigplan,
2852    publisher   = {ACM},
2853    address     = {New York, NY, USA},
2854    volume      = 20,
2855    number      = 10,
2856    month       = oct,
2857    year        = 1985,
2858    pages       = {95-104},
2859}
2860
2861@article{MacLaren77,
2862    keywords    = {exception handling, PL/I},
2863    contributer = {pabuhr@plg},
2864    author      = {M. Donald MacLaren},
2865    title       = {Exception Handling in {PL/I}},
2866    journal     = sigplan,
2867    volume      = 12,
2868    number      = 3,
2869    month       = mar,
2870    year        = 1977,
2871    pages       = {101-104},
2872    note        = {Proceedings of an ACM Conference on Language Design for Reliable Software,
2873                   March 28--30, 1977, Raleigh, North Carolina, U.S.A.},
2874}
2875
2876@article{Goodenough75,
2877    keywords    = {exception handling},
2878    contributer = {pabuhr@plg},
2879    author      = {J. B. Goodenough},
2880    title       = {Exception Handling: Issues and a Proposed Notation},
2881    journal     = cacm,
2882    month       = dec,
2883    year        = 1975,
2884    volume      = 18,
2885    number      = 12,
2886    pages       = {683-696},
2887}
2888
2889@article{Lampson80,
2890    keywords    = {monitors},
2891    contributer = {pabuhr@plg},
2892    author      = {B. W. Lampson and D. D. Redell},
2893    title       = {Experience with Processes and Monitors in Mesa},
2894    journal     = cacm,
2895    volume      = 23,
2896    number      = 2,
2897    month       = feb,
2898    year        = 1980,
2899    pages       = {105-117},
2900}
2901
2902@inproceedings{Shopiro87,
2903    keywords    = {concurrency},
2904    contributer = {pabuhr@plg},
2905    author      = {Jonathan E. Shopiro},
2906    title       = {Extending the {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Task System for Real-Time Control},
2907    booktitle   = {Proceedings and Additional Papers {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Workshop},
2908    organization= {USENIX Association},
2909    address     = {Santa Fe, New Mexico, U.S.A},
2910    month       = nov,
2911    year        = 1987,
2912    pages       = {77-94}
2913}
2914
2915@article{Modula-2+,
2916    keywords    = {Modula-2, exceptions, garbage collection, concurrency},
2917    contributer = {gjditchfield@plg},
2918    author      = {Paul Rovner},
2919    title       = {Extending Modula-2 to Build Large, Integrated Systems},
2920    journal     = {IEEE Software},
2921    month       = nov,
2922    year        = 1986,
2923    volume      = 3,
2924    number      = 6,
2925    pages       = {46-57},
2926    comment     = {
2927        Exceptions can have a parameter.  Procedures can declare the
2928        exceptions they can propagate; others are converted to {\tt
2929        SYSTEM.Fail}.  If they don't, all exceptions propagate.
2930        Block cleanup statements execute no matter how control leaves the
2931        block.
2932
2933        {\tt REF t} is a garbage-collected pointer.  A {\tt REFANY} can be
2934        assigned any {\tt REF t}.  Open array types can be used in
2935        parameter and {\tt REF} types.  {\tt NEW} creates arrays of fixed,
2936        dynamically determined size.
2937
2938        The {\tt THREAD} module provides lightweight processes, semaphores,
2939        and conditions.  A statement {\tt LOCK {\em semaphore} DO
2940        {\em statements} END} is built in.
2941
2942        {\tt SAFE} modules do run-time checks, and only import {\tt
2943        SAFE} modules.  One implementation module can implement several
2944        definition modules.  Opaque type implementations can be
2945        repeated in modules that import its definition, so implementation
2946        modules can collaborate.  The linker checks that all
2947        implementations are the same.
2948    }
2949}
2950
2951@misc{GCCExtensions,
2952    contributer = {a3moss@uwaterloo.ca},
2953    key         = {C Extensions},
2954    author      = {{C Extensions}},
2955    title       = {Extensions to the {C} Language Family},
2956    year        = 2014,
2957    howpublished= {\href{https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/C-Extensions.html}{https://\-gcc.gnu.org/\-onlinedocs/\-gcc-4.7.2/\-gcc/\-C\-Extensions.html}},
2958    optnote     = {Accessed: 2017-04-02},
2959}
2960
2961@inproceedings{BNRPascal,
2962    keywords    = {concurrency, rendezvous},
2963    contributer = {pabuhr@plg},
2964    author      = {R. Kamel and N. Gammage},
2965    title       = {Experience with Rendezvous},
2966    booktitle   = {Proceedings of the 1988 International Conference on Computer Languages},
2967    month       = oct,
2968    year        = 1988,
2969    pages       = {143-149}
2970}
2971
2972@inproceedings{Patwary10,
2973    keywords    = {union-find},
2974    contributer = {a3moss@uwaterloo.ca},
2975    author      = {Patwary, Md. Mostofa Ali and Blair, Jean and Manne, Fredrik},
2976    editor      = {Festa, Paola},
2977    title       = {Experiments on Union-Find Algorithms for the Disjoint-Set Data Structure},
2978    booktitle   = {Experimental Algorithms},
2979    year        = 2010,
2980    publisher   = {Springer Berlin Heidelberg},
2981    address     = {Berlin, Heidelberg},
2982    pages       = {411--423},
2983    isbn        = {978-3-642-13193-6}
2984}
2985
2986% F
2987
2988@inproceedings{Knudsen01,
2989    keywords    = {Beta, exception handling},
2990    contributer = {pabuhr@plg},
2991    author      = {J{\o}rgen Lindskov Knudsen},
2992    title       = {Fault Tolerance and Exception Handling in {BETA}},
2993    booktitle   = {Exception Handling},
2994    publisher   = {Springer},
2995    volume      = 2022,
2996    series      = {Lecture Notes in Computer Science},
2997    year        = 2001,
2998    pages       = {1-17}
2999}
3000
3001@article{Lamport87,
3002    keywords    = {software solutions, mutual exclusion, fast},
3003    contributer = {pabuhr@plg},
3004    author      = {Leslie Lamport},
3005    title       = {A Fast Mutual Exclusion Algorithm},
3006    journal     = tocs,
3007    volume      = 5,
3008    number      = 1,
3009    month       = jan,
3010    year        = {1987},
3011    pages       = {1-11},
3012    publisher   = {ACM},
3013    address     = {New York, NY, USA},
3014}
3015
3016@article{Hesselink17,
3017    keywords    = {concurrency, mutual exclusion, performance experiment, software solutions},
3018    title       = {Fast mutual exclusion by the {T}riangle algorithm},
3019    author      = {Wim H. Hesselink and Peter A. Buhr and David Dice},
3020    journal     = ccpe,
3021    volume      = 30,
3022    number      = 4,
3023    year        = 2018,
3024    month       = feb,
3025    publisher   = {John Wiley \& Sons},
3026    note        = {\href{https://doi.org/10.1002/cpe.4183}{https://\-doi.org/\-10.1002/\-cpe.4183}}
3027}
3028
3029@article{Yang95,
3030    keywords    = {software solutions, N-thread, mutual exclusions},
3031    contributer = {pabuhr@plg},
3032    author      = {Jae-Heon Yang and James H. Anderson},
3033    title       = {A Fast, Scalable Mutual Exclusion Algorithm},
3034    journal     = {Distributed Computing},
3035    publisher   = {Springer-Verlag},
3036    volume      = {9},
3037    number      = {1},
3038    year        = {1995},
3039    pages       = {51-60},
3040}
3041
3042@inproceedings{F-bound,
3043    keywords    = {},
3044    contributer = {gjditchfield@plg},
3045    author      = {Peter Canning and William Cook and Walter Hill and Walter Olthoff and John C. Mitchell},
3046    title       = {F-Bounded Polymorphism for Object-Oriented Programming},
3047    booktitle   = {Fourth International Conference on Functional Programming Languages and Computer Architecture},
3048    year        = 1989,
3049    month       = sep,
3050    pages       = {273-280}
3051}
3052
3053@mastersthesis{Wasik08,
3054    author      = {Ayelet Wasik},
3055    title       = {Features of a Multi-Threaded Memory Allocator},
3056    school      = {University of Waterloo},
3057    year        = 2008,
3058    month       = jan,
3059    address     = {Waterloo, Ontario, Canada, N2L 3G1},
3060    note        = {\textsf{http://uwspace.uwaterloo.ca/\-bitstream/\-10012/\-3501/\-1/\-Thesis.pdf}},
3061}
3062
3063@article{Holzmann94,
3064    keywords    = {semaphore, flags},
3065    contributer = {pabuhr@plg},
3066    author      = {Gerard J. Holzmann and Bj\"{o}rn Pehrson},
3067    title       = {The First Data Networks},
3068    journal     = {Scientific American},
3069    month       = jan,
3070    year        = 1994,
3071    volume      = 12,
3072    number      = 1,
3073    pages       = {124-129},
3074}
3075
3076@article{Bohm66,
3077    keywords    = {goto, structured programming},
3078    contributer = {pabuhr@plg},
3079    author      = {C. B\"{o}hm and G. Jacopini},
3080    title       = {Flow diagrams, Turing Machines and Languages with only two Formation Rules},
3081    journal     = cacm,
3082    month       = may,
3083    year        = 1966,
3084    volume      = 9,
3085    number      = 5,
3086    pages       = {366-371},
3087}
3088
3089@manual{Fortran95,
3090    keywords    = {Fortran 95},
3091    contributer = {pabuhr@plg},
3092    key         = {Fortran95},
3093    title       = {Fortran 95 Standard, ISO/IEC 1539},
3094    organization= {Unicomp, Inc.},
3095    address     = {7660 E. Broadway, Tucson, Arizona, U.S.A, 85710},
3096    month       = jan,
3097    year        = 1997,
3098}
3099
3100@manual{Fortran08,
3101    keywords    = {ISO/IEC Fortran 08},
3102    contributer = {pabuhr@plg},
3103    author      = {Fortran08},
3104    title       = {Programming Languages -- {Fortran} Part 1:Base Language ISO/IEC 1539-1:2010},
3105    edition     = {3rd},
3106    publisher   = {International Standard Organization},
3107    address     = {\href{https://www.iso.org/standard/50459.html}{https://\-www.iso.org/\-standard/\-50459.html}},
3108    year        = 2010,
3109}
3110
3111@book{Andrews00:book,
3112    keywords    = {concurrency},
3113    contributer = {pabuhr@plg},
3114    author      = {Gregory R. Andrews},
3115    title       = {Foundations of Multithreaded, Parallel and Distributed Programming},
3116    publisher   = {Addison--Wesley},
3117    year        = 2000,
3118}
3119
3120@article{Agha89,
3121    keywords    = {actors, concurrency},
3122    contributer = {pabuhr@plg},
3123    author      = {Gul A. Agha},
3124    title       = {Foundational Issues in Concurrent Computing},
3125    journal     = sigplan,
3126    month       = apr,
3127    year        = 1989,
3128    volume      = 24,
3129    number      = 4,
3130    pages       = {60-65},
3131    note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming,
3132                   Sept. 26--27, 1988, San Diego, California, U.S.A},
3133}
3134
3135@article{ool,
3136    keywords    = {},
3137    contributer = {gjditchfield@plg},
3138    author      = {Douglas T. Ross},
3139    title       = {Toward Foundations for the Understanding of Type},
3140    journal     = sigplan,
3141    year        = 1976,
3142    volume      = 11,
3143    pages       = {63-65},
3144    note        = {Conference on Data: Abstraction, Definition and Structure},
3145    summary     = {
3146        Possibly the first use (without definition, alas) of the phrase
3147        "object oriented language".  Metaphysical to the point of incoherence.
3148    }
3149}
3150
3151@article{frames,
3152    keywords    = {frames},
3153    contributer = {gjditchfield@plg},
3154    author      = {Paul G. Basset},
3155    title       = {Frame-Based Software Engineering},
3156    journal     = {IEEE Software},
3157    month       = jul, year = 1987,
3158    volume      = 4, number = 4, pages = {9-16}
3159}
3160
3161@misc{Sutter05c,
3162    contributer = {pabuhr@plg},
3163    title       = {The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software},
3164    author      = {Herb Sutter},
3165    howpublished= {\url{http://www.gotw.ca/publications/concurrency-ddj.htm}},
3166    year        = {2005},
3167    note        = {originally Dr. Dobb's Journal 30(3)},
3168}
3169
3170@article{Sutter05,
3171    keywords    = {concurrency, C++},
3172    contributer = {pabuhr@plg},
3173    author      = {Herb Sutter},
3174    title       = {A Fundamental Turn Toward Concurrency in Software},
3175    journal     = {Dr. Dobb's Journal : Software Tools for the Professional Programmer},
3176    month       = mar,
3177    year        = 2005,
3178    volume      = 30,
3179    number      = 3,
3180    pages       = {16-22},
3181}
3182
3183@inproceedings{Dony01,
3184    keywords    = {Smalltalk, exception handling},
3185    contributer = {pabuhr@plg},
3186    author      = {Chistophe Dony},
3187    title       = {A Fully Object-Oriented Exception Handling System: Rationale and Smalltalk Implementation},
3188    booktitle   = {Exception Handling},
3189    publisher   = {Springer},
3190    volume      = 2022,
3191    series      = {Lecture Notes in Computer Science},
3192    year        = 2001,
3193    pages       = {18-38}
3194}
3195
3196@misc{FW,
3197    key         = {FW},
3198    contributer = {gjditchfield@plg},
3199    title       = {Funk \& Wagnalls Standard Desk Dictionary},
3200    year        = 1980
3201}
3202
3203@book{Knuth73V1,
3204    contributer = {pabuhr@plg},
3205    author      = {Donald E. Knuth},
3206    title       = {Fundamental Algorithms},
3207    series      = {The Art of Computer Programming},
3208    publisher   = {Addison-Wesley},
3209    address     = {Boston},
3210    year        = 1973,
3211    volume      = 1,
3212    edition     = {2nd},
3213}
3214
3215@inproceedings{Strachey,
3216    keywords    = {polymorphism},
3217    contributer = {gjditchfield@plg},
3218    author      = {C. Strachey},
3219    title       = {Fundamental Concepts in Programming Languages},
3220    booktitle   = {Lecture Notes for the International Summer School in Computer Programming},
3221    year        = 1967,
3222    month       = aug,
3223    address     = {Copenhagen},
3224    comment     = {
3225        Defines ad-hoc and parametric polymorphism.
3226    }
3227}
3228
3229@article{Eisenberg72,
3230    keywords    = {concurrency, N-Process solution, O(N)},
3231    contributer = {pabuhr@plg},
3232    author      = {Murray A. Eisenberg and Michael R. McGuire},
3233    title       = {Further Comments on {D}ijkstra's Concurrent Programming Control Problem},
3234    journal     = cacm,
3235    month       = nov,
3236    year        = 1972,
3237    volume      = 15,
3238    number      = 11,
3239    pages       = {999},
3240}
3241
3242% G
3243
3244@article{Boehm88,
3245    keywords    = {conservative garbage collection, C},
3246    contributer = {gjditchfield@plg},
3247    author      = {Hans-Juergen Boehm and Mark Weiser},
3248    title       = {Garbage Collection in an Uncooperative Environment},
3249    journal     = spe,
3250    month       = sep,
3251    year        = 1988,
3252    volume      = 18,
3253    number      = 9,
3254    pages       = {807-820}
3255}
3256
3257@manual{gcc,
3258    keywords    = {},
3259    contributer = {gjditchfield@plg},
3260    title       = {GCC},
3261    author      = {Richard M. Stallman},
3262    organization= {Free Software Foundation},
3263    address     = {Cambridge}
3264}
3265
3266@article{doUpon,
3267    keywords    = {formal verification, axiomatic semantics, control structures},
3268    contributer = {gjditchfield@plg},
3269    author      = {Ed Anson},
3270    title       = {A Generalized Iterative Construct and Its Semantics},
3271    journal     = toplas,
3272    volume      = {9},    number = {4},
3273    pages       = {567-581},
3274    month       = oct, year = 1987,
3275    comment     = {
3276        \begin{verbatim}
3277            do
3278                   P1 -> L1
3279               [] P2 -> L2
3280            ...
3281               [] Pm -> Lm
3282            upon
3283                   Q1 -> M1
3284               [] Q2 -> M2
3285            ...
3286               [] qn -> mn
3287            od
3288        \end{verbatim}
3289
3290        If there is an i such that Qi is true, execute Mi and terminate.
3291        Otherwise, if there is an i such that Pi is true, execute Li and
3292        repeat the loop.  Otherwise, fail.
3293    }
3294}
3295
3296@unpublished{Bilson,
3297    keywords    = {generic programming, generics, polymorphism},
3298    contributor = {a3moss@plg},
3299    author      = {Richard C. Bilson and Glen Ditchfield and Peter A. Buhr},
3300    title       = {Generic Programming with Inferred Models},
3301}
3302
3303@article{Haskell,
3304    keywords    = {lazy evaluation, type class},
3305    contributer = {pabuhr},
3306    author      = {Paul Hudak and Joseph H. Fasel},
3307    title       = {A Gentle Introduction to Haskell},
3308    journal     = sigplan,
3309    volume      = 27,
3310    number      = 5,
3311    month       = may,
3312    year        = 1992,
3313    pages       = {T1-53},
3314}
3315
3316@manual{GMP,
3317    keywords    = {GMP arbitrary-precision library},
3318    contributer = {pabuhr@plg},
3319    key         = {GMP},
3320    title       = {{GNU} Multiple Precision Arithmetic Library},
3321    address     = {GNU},
3322    year        = 2016,
3323    note        = {\href{https://gmplib.org}{https://\-gmplib.org}},
3324}
3325
3326@manual{Go,
3327    keywords    = {Go programming language},
3328    contributer = {pabuhr@plg},
3329    author      = {Robert Griesemer and Rob Pike and Ken Thompson},
3330    title       = {{Go} Programming Language},
3331    organization= {Google},
3332    year        = 2009,
3333    note        = {\href{http://golang.org/ref/spec}{http://\-golang.org/\-ref/\-spec}},
3334}
3335
3336@article{Dijkstra68a,
3337    keywords    = {goto},
3338    contributer = {pabuhr@plg},
3339    author      = {Edsger W. Dijkstra},
3340    title       = {Go To Statement Considered Harmful},
3341    journal     = cacm,
3342    month       = mar,
3343    year        = 1968,
3344    volume      = 11,
3345    number      = 3,
3346    pages       = {147-148},
3347    note        = {Reprinted in \cite{Yourdon79} pp. 29--36.},
3348}
3349
3350@misc{GObject,
3351    keywords    = {GObject},
3352    contributor = {a3moss@uwaterloo.ca},
3353    key         = {GObject},
3354    organization= {The {GNOME} Project},
3355    title       = {{GO}bject Reference Manual},
3356    year        = 2014,
3357    howpublished= {https://developer.gnome.org/gobject/stable/},
3358    optnote     = {Accessed: 2017-04},
3359}
3360
3361@article{Choi91,
3362    keywords    = {contra-variance, functions},
3363    contributer = {pabuhr@plg},
3364    author      = {Injun Choi and Michael V. Mannino},
3365    title       = {Graph Interpretation of Methods: A Unifying Framework for Polymorphism in Object-Oriented Programming},
3366    journal     = {OOPS Messenger},
3367    volume      = 2,
3368    number      = 1,
3369    month       = jan,
3370    year        = 1991,
3371    pages       = {38-54},
3372}
3373
3374@misc{GNU-C,
3375    keywords    = {C, ANSI C},
3376    contributer = {pabuhr@plg},
3377    author      = {Richard Stallman},
3378    title       = {The Free Software Foundation's Gnu {C} Compiler},
3379    howpublished= {Free Software Foundation, 1000 Mass Ave., Cambridge, MA, U.S.A., 02138},
3380    year        = 1989,
3381}
3382
3383@article{Dijkstra:green,
3384    keywords    = {ada},
3385    contributer = {gjditchfield@plg},
3386    author      = {Edsger W. Dijkstra},
3387    title       = {On the GREEN Language submitted to the DoD},
3388    journal     = sigplan,
3389    year        = 1978,
3390    month       = oct,
3391    volume      = 13,
3392    number      = 10,
3393    pages       = {16-21}
3394}
3395
3396@inproceedings{Miller02,
3397    keywords    = {exception handling},
3398    contributer = {pabuhr@plg},
3399    author      = {Robert Miller and Anand Tripathi},
3400    title       = {The Guardian Model for Exception Handling in Distributed Systems},
3401    booktitle   = {21st Symposium on Reliable Distributed Systems},
3402    organization= {IEEE},
3403    address     = {Suita, Japan},
3404    year        = 2002,
3405    month       = oct,
3406    pages       = {304-313}
3407}
3408
3409@phdthesis{Chen09,
3410    author      = {Jun Chen},
3411    title       = {Guided Testing of Concurrent Programs Using Value Schedules},
3412    school      = {University of Waterloo},
3413    year        = 2009,
3414    month       = sep,
3415    address     = {Waterloo, Ontario, Canada, N2L 3G1},
3416    note        = {\textsf{http://uwspace.uwaterloo.ca/bitstream/\-10012/\-4735/\-1/\-Chen-Jun.pdf}},
3417}
3418
3419@misc{GNU-C++,
3420    keywords    = {C++, GNU C},
3421    contributer = {pabuhr@plg},
3422    author      = {Michael D. Tiemann},
3423    title       = {User's Guide to GNU {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
3424    howpublished= {Free Software Foundation, 1000 Mass Ave., Cambridge, MA, U.S.A., 02138},
3425    month       = mar,
3426    year        = 1990,
3427}
3428
3429% H
3430
3431@manual{Haskell10,
3432    keywords    = {Haskell},
3433    contributer = {pabuhr@plg},
3434    author      = {Haskell},
3435    title       = {Haskell 2010 Language Report},
3436    edition     = {{S}imon {M}arlow},
3437    year        = 2010,
3438    note        = {\href{https://haskell.org/definition/haskell2010.pdf}{https://\-haskell.org/\-definition/\-haskell2010.pdf}},
3439}
3440
3441@article{Michael04a,
3442    keywords    = {Lock-free, synchronization, concurrent programming, memory management, multiprogramming, dynamic data structures},
3443    author      = {Maged M. Michael},
3444    title       = {Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects},
3445    journal     = ieeepds,
3446    volume      = 15,
3447    number      = 6,
3448    month       = jun,
3449    year        = 2004,
3450    pages       = {491-504},
3451    publisher   = {IEEE Press},
3452    address     = {Piscataway, NJ, USA},
3453}
3454
3455@techreport{Hermes90,
3456    keywords    = {processes, distributed computing},
3457    contributer = {pabuhr@plg},
3458    author      = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini}, 
3459    title       = {Hermes: A Language for Distributed Computing},
3460    institution = {IBM T. J. Watson Research Center},
3461    address     = {Yorktown Heights, New York, U.S.A., 10598},
3462    month       = oct,
3463    year        = 1990,
3464}
3465
3466@book{Hermes91,
3467    keywords    = {processes, distributed computing},
3468    contributer = {pabuhr@plg},
3469    author      = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini}, 
3470    title       = {Hermes: A Language for Distributed Computing},
3471    publisher   = {Prentice-Hall},
3472    address     = {Englewood Cliffs},
3473    series      = {Innovative Technology},
3474    year        = 1991,
3475}
3476
3477@article{katzenelson83b,
3478    contributer = {gjditchfield@plg},
3479    author      = "Jacob Katzenelsen",
3480    title       = "Higher Level Programming and Data Abstraction---A Case Study using Enhanced C",
3481    journal     = spe,
3482    year        = 1983,
3483    volume      = 13,
3484    number      = 7,
3485    pages       = {577-596},
3486    month       = jul
3487}
3488
3489@techreport{Hoare73,
3490    keywords    = {},
3491    contributer = {gjditchfield@plg},
3492    author      = {C. A. R. Hoare},
3493    title       = {Hints on Programming Language Design},
3494    institution = {Stanford University Computer Science Department},
3495    year        = 1973,
3496    month       = dec,
3497    number      = {CS-73-403},
3498    note        = {Reprinted in \cite{pldesign}.}
3499}
3500
3501@article{Dijkstra71,
3502    keywords    = {monitor, secretary},
3503    contributer = {pabuhr@plg},
3504    author      = {E. W. Dijkstra},
3505    title       = {Hierarchical Ordering of Sequential Processes},
3506    journal     = acta,
3507    volume      = 1,
3508    pages       = {115-138},
3509    year        = 1971,
3510}
3511
3512@article{Hesselink17b,
3513    keywords    = {concurrency, mutual exclusion, performance experiment, software solutions},
3514    title       = {High-Contention Mutual Exclusion by Elevator Algorithms},
3515    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
3516    journal     = ccpe,
3517    volume      = 30,
3518    number      = 18,
3519    year        = 2018,
3520    month       = sep,
3521    publisher   = {John Wiley \& Sons},
3522    note        = {\href{https://doi.org/10.1002/cpe.4475}{https://\-doi.org/\-10.1002/\-cpe.4475}},
3523}
3524
3525@article{Buhr15a,
3526    keywords    = {software solution, mutual exclusion, performance experiment},
3527    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
3528    title       = {High-Performance {$N$}-Thread Software Solutions for Mutual Exclusion},
3529    journal     = ccpe,
3530    volume      = 27,
3531    number      = 3,
3532    pages       = {651-701},
3533    month       = mar,
3534    year        = 2015,
3535}
3536
3537@article{Ackermann28,
3538    keywords    = {recursion, Ackermann function},
3539    contributer = {pabuhr@plg},
3540    author      = {Wilhelm Ackermann},
3541    title       = {Zum Hilbertschen Aufbau der reellen Zahlen},
3542    publisher   = {Springer},
3543    journal     = mathann,
3544    number      = 1,
3545    volume      = 99,
3546    pages       = {118-133},
3547    month       = dec,
3548    year        = 1928,
3549}
3550
3551@inproceedings{typeclass,
3552    keywords    = {Hindley/Miller type systems, Haskell},
3553    contributer = {gjditchfield@plg},
3554    author      = {Philip Wadler and Stephen Blott},
3555    title       = {How to make {\em Ad-Hoc} Polymorphism Less {\em Ad-Hoc}},
3556    booktitle   = popl,
3557    year        = 1989,
3558    pages       = {60-76},
3559    organization= {Association for Computing Machinery}
3560}
3561
3562% I
3563
3564@book{IBM370,
3565    keywords    = {370, IBM},
3566    contributer = {pabuhr@plg},
3567    key         = {IBM370},
3568    title       = {{IBM} System/370 Principles of Operation},
3569    publisher   = {IBM},
3570    number      = {GA22-7000-8},
3571    month       = oct,
3572    year        = 1981,
3573    edition     = {9th}
3574}
3575
3576@book{Icon,
3577    keywords    = {Icon},
3578    contributer = {pabuhr@plg},
3579    author      = {Ralph E. Griswold and Madge T. Griswold},
3580    title       = {The Icon Programming Language},
3581    publisher   = {Prentice-Hall},
3582    address     = {Englewood Cliffs},
3583    year        = 1983,
3584}
3585
3586@inproceedings{Valois94,
3587    keywords    = {lock free, queue},
3588    contributer = {pabuhr@plg},
3589    author      = {John D. Valois},
3590    title       = {Implementing Lock-Free Queues},
3591    booktitle   = {Seventh International Conference on Parallel and Distributed Computing Systems},
3592    address     = {Las Vegas, Nevada, U.S.A.},
3593    year        = {1994},
3594    pages       = {64-69},
3595}
3596
3597@article{Hehner81,
3598    keywords    = {concurrency, critical section, bakery algorithm},
3599    contributer = {pabuhr@plg},
3600    author      = {Eric C. R. Hehner and R. K. Shyamasundar},
3601    title       = {An Implementation of {P} and {V}},
3602    journal     = ipl,
3603    year        = 1981,
3604    month       = aug,
3605    volume      = 12,
3606    number      = 4,
3607    pages       = {196-198},
3608}
3609
3610@incollection{Steenkiste91,
3611    keywords    = {lisp},
3612    contributer = {gjditchfield@plg},
3613    author      = {Peter A. Steenkiste},
3614    title       = {The Implementation of Tags and Run-Time Checking},
3615    booktitle   = {Topics in Advanced Language Implementation},
3616    pages       = {3-24},
3617    year        = 1991,
3618    editor      = {Peter Lee},
3619    chapter     = {1},
3620    publisher   = {The MIT Press}
3621}
3622
3623@techreport{Roberts89,
3624    keywords    = {},
3625    contributer = {pabuhr@plg},
3626    author      = {Eric S. Roberts},
3627    title       = {Implementing Exceptions in {C}},
3628    institution = {Digital Systems Research Center},
3629    address     = {130 Lytton Avenue, Palo Alto, California, 94301},
3630    number      = {40},
3631    month       = mar,
3632    year        = 1989,
3633}
3634
3635@mastersthesis{Bilson03,
3636    keywords    = {Cforall, parametric polymorphism, overloading},
3637    contributer = {pabuhr@plg},
3638    author      = {Richard C. Bilson},
3639    title       = {Implementing Overloading and Polymorphism in \textsf{C}$\mathbf{\forall}$},
3640    school      = {School of Computer Science, University of Waterloo},
3641    year        = 2003,
3642    address     = {Waterloo, Ontario, Canada, N2L 3G1},
3643    note        = {\href{http://plg.uwaterloo.ca/theses/BilsonThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-BilsonThesis.pdf}},
3644}
3645
3646@article{Buhr05b,
3647    keywords    = {monitor, automatic signal, implicit signal},
3648    contributer = {pabuhr@plg},
3649    author      = {Peter A. Buhr and Ashif S. Harji},
3650    title       = {Implicit-signal monitors},
3651    journal     = toplas,
3652    volume      = 27,
3653    number      = 6,
3654    month       = nov,
3655    year        = 2005,
3656    issn        = {0164-0925},
3657    pages       = {1270--1343},
3658    publisher   = {ACM Press},
3659    address     = {New York, NY, USA},
3660}
3661
3662@article{Galler64,
3663    keywords    = {union-find, original},
3664    contributer = {a3moss@uwaterloo.ca},
3665    title       = {An improved equivalence algorithm},
3666    author      = {Galler, Bernard A and Fisher, Michael J},
3667    journal     = {Communications of the ACM},
3668    volume      = {7},
3669    number      = {5},
3670    pages       = {301--303},
3671    year        = {1964},
3672    publisher   = {ACM}
3673}
3674
3675@article{Baker77,
3676    author      = {Henry C. Baker, Jr. and Carl Hewitt},
3677    title       = {The Incremental Garbage Collection of Processes},
3678    journal     = {SIGART Bulletin},
3679    publisher   = {ACM},
3680    address     = {New York, NY, USA},
3681    month       = aug,
3682    year        = 1977,
3683    pages       = {55-59},
3684    issn        = {0163-5719},
3685}
3686
3687@book{Algol68,
3688    keywords    = {Algol68},
3689    contributer = {pabuhr@plg},
3690    author      = {C. H. Lindsey and S. G. van der Meulen},
3691    title       = {Informal Introduction to ALGOL 68},
3692    publisher   = {North-Holland},
3693    address     = {London},
3694    year        = 1977,
3695}
3696
3697@inproceedings{Cook90,
3698    keywords    = {f-bounded polymorhpism, lambda calculus},
3699    contributer = {gjditchfield@plg},
3700    author      = {William R. Cook and Walter L. Hill and Peter S. Canning},
3701    title       = {Inheritance is Not Subtyping},
3702    booktitle   = popl,
3703    year        = 1990,
3704    pages       = {125-135},
3705    organization= {Association for Computing Machinery},
3706    abstract    = {
3707        In typed object-oriented languages the subtype relation is
3708        typically based on the inheritance hierarchy.  This approach,
3709        however, leads either to insecure type-systems or to restrictions
3710        on inheritance that make it less flexible than untyped Smalltalk
3711        inheritance.  We present a new typed model of inheritance that
3712        allows more of the flexibility of Smalltalk inheritance within a
3713        statically-typed system.  Significant features of our analysis are
3714        the introduction of polymorphism into the typing of inheritance and
3715        the uniform application of inheritance to objects, classes and
3716        types.  The resulting notion of {\em type inheritance} allows us to
3717        show that the type of an inherited object is an inherited type but
3718        not always a subtype.
3719    }
3720}
3721
3722@inproceedings{MMR92,
3723    keywords    = {},
3724    contributer = {gjditchfield@plg},
3725    author      = {Robert E. Minnear and Patrick A. Muckelbauer and Vincent F. Russo},
3726    title       = {Integrating the {Sun Microsystems} {XDR/RPC} Protocols
3727                  into the {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Stream Model},
3728    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference Proceedings},
3729    year        = 1992,
3730    month       = aug,
3731    pages       = {295-312},
3732    organization= {USENIX Association},
3733    address     = {2590 Ninth Street, Suite 215, Berkeley, CA 94710},
3734    abstract    = {
3735        This paper reports our experiences integrating the Sun Microsystems
3736        RPC and XDR protocol specifications into the C++ model of
3737        input/output streams.  As part of the {\it Renaissance} operating
3738        system project, we wish to construct network servers and clients,
3739        written in C++, which interoperate with existing UNIX clients
3740        and servers.  We discovered that, although it would be possible to
3741        re-implement the procedural based XDR/RPC implementation
3742        distributed by Sun Microsystems in C++, it is far cleaner to
3743        integrate the protocols with the C++ I/O stream model.  We
3744        feel the resulting model provides a cleaner way of implementing RPC
3745        clients and servers without losing functionality or compatibility
3746        with existing clients and servers.
3747    }
3748}
3749
3750@inproceedings{Zuo08,
3751    keywords    = {shared memory systems,intelligent multiport memory,multiprocessors systems,shared memory system},
3752    author      = {Wang Zuo and Wang Zuo and Li Jiaxing},
3753    title       = {An Intelligent Multi-Port Memory},
3754    booktitle   = {Symposium on Intelligent Information Technology Application Workshops, Shanghai, China},
3755    month       = dec,
3756    year        = 2008,
3757    pages       = {251-254},
3758    publisher   = {IEEE Computer Society},
3759    address     = {Los Alamitos, CA, USA},
3760}
3761
3762@book{Francez96,
3763    keywords    = {await, formal},
3764    contributer = {pabuhr@plg},
3765    author      = {Nissim Francez and Ira R. Forman},
3766    title       = {Interacting Processes: A Multiparty Approach to Coordinated Distributed Programming},
3767    publisher   = {Addison-Wesley},
3768    address     = {Boston},
3769    series      = {ACM Press Books},
3770    year        = 1996,
3771}
3772
3773@article{Labreche90,
3774    keywords    = {concurrency, C++},
3775    contributer = {pabuhr@plg},
3776    author      = {Pierre Labr{\`{e}}che},
3777    title       = {Interactors: A Real-Time Executive with Multiparty Interactions in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
3778    journal     = sigplan,
3779    volume      = 25,
3780    number      = 4,
3781    month       = apr,
3782    year        = 1990,
3783    pages       = {20-32},
3784}
3785
3786@inproceedings{interfaces,
3787    keywords    = {parameterized interfaces, classes, recursion/inheritance},
3788    contributer = {gjditchfield@plg},
3789    author      = {Peter S. Canning and William R. Cook and Walter L. Hill and
3790        Walter G. Olthoff},
3791    title       = {Interfaces for Strongly-Typed Object-Oriented Programming},
3792    crossref    = "OOPSLA89",
3793    pages       = {457-467},
3794    abstract    = {
3795        This paper develops a system of explicit interfaces for
3796        object-oriented programming.  The system provides the benefits of
3797        module interfaces found in languages like Ada and Modula-2 while
3798        preserving the expressiveness that gives untyped object-oriented
3799        languages like Smalltalk their flexibility.  Interfaces are
3800        interpreted as polymorphic types to make the system sufficiently
3801        powerful.  We use interfaces to analyze the properties of
3802        inheritance, and identify three distinct kinds of inheritance in
3803        object-oriented programming, corresponding to objects, classes, and
3804        interfaces, respectively.  Object interfaces clarify the
3805        distinction between interface containment and inheritance and give
3806        insight into limitations caused by equating the notions of type and
3807        class in many typed object-oriented programming languages.
3808        Interfaces also have practical consequences for design,
3809        specification, and maintenance of object-oriented systems.
3810    }
3811}
3812
3813@phdthesis{Girard72,
3814    keywords    = {universal quantification},
3815    contributer = {gjditchfield@plg},
3816    author      = {J.-Y. Girard},
3817    title       = {Interpretation fonctionelle et elimination des coupures de
3818        l'arithmetique d'ordre superieur},
3819    school      = {Universite Paris},
3820    year        = {1972}
3821}
3822
3823@article{Karaorman93,
3824    keywords    = {Eiffel, concurrency libraries},
3825    contributer = {pabuhr@plg},
3826    author      = {Murat Karaorman and John Bruno},
3827    title       = {Introducing Concurrency to a Sequential Language},
3828    journal     = cacm,
3829    month       = sep,
3830    year        = 1993,
3831    volume      = 36,
3832    number      = 9,
3833    pages       = {103-116}
3834}
3835
3836@book{Corman92,
3837    keywords    = {PRAM, parallel algorithms},
3838    contributer = {pabuhr@plg},
3839    author      = {Thomas H. Cormen and Charles E. Leiserson and Ronald L. Rivest},
3840    title       = {Introduction to Algorithms},
3841    publisher   = {MIT Press/McGraw-Hill},
3842    address     = {Cambridge},
3843    series      = {Electrical Engineering and Computer Science Series},
3844    year        = 1992,
3845}
3846
3847@book{Hopcroft79,
3848    keywords    = {finite-state machine, push-dowm automata},
3849    contributer = {pabuhr@plg},
3850    author      = {John E. Hopcroft and Jeffrey D. Ullman},
3851    title       = {Introduction to Automata Theory, Languages and Computation},
3852    publisher   = {Addison-Wesley},
3853    address     = {Boston},
3854    year        = 1979,
3855}
3856
3857@techreport{walker87,
3858    keywords    = {CCS},
3859    contributer = {gjditchfield@plg},
3860    author      = {David Walker},
3861    title       = {Introduction to a Calculus of Communicating Systems},
3862    institution = {Laboratory for Foundations of Computer Science},
3863    year        = 1987,
3864    address     = {Department of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ},
3865    month       = jun,
3866    number      = {ECS-LFCS-87-22},
3867}
3868
3869@article{katzenelson83a,
3870    author      = {Jacob Katzenelson},
3871    title       = {Introduction to Enhanced C (EC)},
3872    journal     = spe,
3873    volume      = 13,
3874    number      = 7,
3875    year        = 1983,
3876    month       = jul,
3877    pages       = {551-576},
3878}
3879
3880@book{Deitel90,
3881    keywords    = {concurrency, operating systems},
3882    contributer = {pabuhr@plg},
3883    author      = {Harvey M. Deitel},
3884    title       = {An Introduction to Operating Systems},
3885    publisher   = {Addison-Wesley},
3886    address     = {Boston},
3887    year        = 1990,
3888    edition     = {2nd},
3889}
3890
3891@techreport{Birrell89,
3892    keywords    = {threads, monitors},
3893    contributer = {pabuhr@plg},
3894    author      = {Andrew D. Birrell},
3895    title       = {An Introduction to Programming with Threads},
3896    institution = {Digital Systems Research Center},
3897    address     = {130 Lytton Avenue, Palo Alto, California, 94301},
3898    number      = {35},
3899    month       = jan,
3900    year        = 1989,
3901    note        = {{\textsf{http://www.hpl.hp.com/\-techreports/\-Compaq-DEC/\-SRC-RR-35.html}}},
3902
3903}
3904
3905@article{t/o,
3906    keywords    = {Trellis/Owl},
3907    contributer = {gjditchfield@plg},
3908    author      = {Craig Schaffert and Topher Cooper and Bruce Bullis and Mike Kilian and Carrie Wilpot},
3909    title       = {An Introduction to Trellis/Owl},
3910    journal     = sigplan,
3911    volume      = 21,
3912    number      = 11,
3913    year        = 1986,
3914    month       = nov,
3915    pages       = {9-16},
3916}
3917
3918@inproceedings{Pharr12,
3919    title       = {ispc: A {SPMD} compiler for high-performance CPU programming},
3920    author      = {Pharr, Matt and Mark, William R},
3921    booktitle   = {Innovative Parallel Computing (InPar), 2012},
3922    pages       = {1--13},
3923    year        = {2012},
3924    month       = may,
3925    address     = {San Jose, CA, USA},
3926    publisher   = {IEEE},
3927}
3928
3929@inproceedings{DeLozier13,
3930    keywords    = {C++, local pointers, memory safety, type-safety},
3931    author      = {DeLozier, Christian and Eisenberg, Richard and Nagarakatte, Santosh and Osera, Peter-Michael and Martin, Milo M.K. and Zdancewic, Steve},
3932    title       = {{I}ronclad {C++}: A Library-augmented Type-safe Subset of {C++}},
3933    booktitle   = {Proceedings of the 2013 ACM SIGPLAN International Conference on Object Oriented Programming Systems Languages \& Applications},
3934    series      = {OOPSLA'13},
3935    year        = {2013},
3936    address     = {Indianapolis, Indiana, USA},
3937    pages       = {287-304},
3938    publisher   = {ACM},
3939}
3940
3941@inproceedings{Hibbard77,
3942    keywords    = {algol-68, concurrency},
3943    contributer = {pabuhr@plg},
3944    author      = {Peter G. Hibbard and P. Knueven and B. W. Leverett},
3945    title       = {Issues in the Efficient Implementation and Use of Multiprocessing in {Algol} 68},
3946    booktitle   = {Proceedings of the 5th Annual iii Conference},
3947    address     = {Guidel, France},
3948    month       = may,
3949    year        = 1977,
3950    pages       = {203-221}
3951}
3952
3953@inproceedings{Miller97,
3954    keywords    = {exception handling, software-engineering},
3955    contributer = {pabuhr@plg},
3956    author      = {Robert Miller and Anand Tripathi},
3957    title       = {Issues with Exception Hnadling in Object-Oriented Systems},
3958    booktitle   = {ECOOP'97},
3959    publisher   = {Springer},
3960    volume      = 1241,
3961    series      = {Lecture Notes in Computer Science},
3962    year        = 1997,
3963    pages       = {85-103}
3964}
3965   
3966@article{Murer96,
3967    keywords    = {interators, generators, cursors},
3968    contributer = {pabuhr@plg},
3969    author      = {Stephan Murer and Stephen Omohundro and David Stoutamire and Clemens Szyperski},
3970    title       = {Iteration Abstraction in Sather},
3971    journal     = toplas,
3972    month       = jan,
3973    year        = 1996,
3974    volume      = 18,
3975    number      = 1,
3976    pages       = {1-15},
3977}
3978
3979% J
3980                 
3981@book{Java,
3982    keywords    = {Java},
3983    contributer = {pabuhr@plg},
3984    author      = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha},
3985    title       = {The {Java} Language Specification},
3986    publisher   = {Addison-Wesley},
3987    address     = {Reading},
3988    year        = 2000,
3989    edition     = {2nd},
3990}
3991
3992@manual{Java8,
3993    keywords    = {Java SE 8},
3994    contributer = {pabuhr@plg},
3995    author      = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha and Alex Buckley},
3996    title       = {{Java} Language Specification},
3997    publisher   = {Oracle},
3998    year        = 2015,
3999    edition     = {{J}ava {SE} 8},
4000}
4001
4002@manual{JUC,
4003    keywords    = {Java concurrency library},
4004    contributer = {pabuhr@plg},
4005    title       = {java.util.concurrency},
4006    author      = {Doug Lea},
4007    organization= {Oracle},
4008    year        = 2014,
4009    note        = {\href{http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/package-summary.html}{http://docs.oracle.com/\-javase/7/\-docs/\-api/\-java/\-util/\-concurrent/\-package-summary.html}},
4010}
4011
4012% K
4013
4014@inproceedings{Buhr96b,
4015    author      = {Peter A. Buhr and Martin Karsten and Jun Shih},
4016    title       = {{\small\textsf{KDB}}: A Multi-threaded Debugger for Multi-threaded Applications},
4017    booktitle   = {Proc. of SPDT'96: SIGMETRICS Symp. on Parallel and Distributed Tools},
4018    publisher   = {ACM Press},
4019    address     = {Philadelphia, Pennsylvania, U.S.A.},
4020    month       = may,
4021    year        = 1996,
4022    pages       = {80-87},
4023}
4024
4025@article{Duggan96,
4026    keywords    = {concurrency, critical section},
4027    contributer = {pabuhr@plg},
4028    author      = {Dominic Duggan and Gordon V. Cormack and John Ophel},
4029    title       = {Kinded Type Inference for Parametric Overloading},
4030    journal     = acta,
4031    volume      = 33,
4032    number      = 1,
4033    year        = 1996,
4034    pages       = {21-68},
4035}
4036
4037@article{Peter35,
4038    keywords    = {recursion, Ackermann function},
4039    contributer = {pabuhr@plg},
4040    author      = {R{\'{o}}zsa P{\'{e}}ter},
4041    title       = {Konstruktion nichtrekursiver Funktionen},
4042    publisher   = {Springer},
4043    journal     = mathann,
4044    number      = 111,
4045    volume      = 1,
4046    pages       = {42-60},
4047    month       = dec,
4048    year        = 1935,
4049}
4050
4051% L
4052
4053@TechReport{WVWR88:L,
4054    contributer = {gjditchf@plg},
4055    author      = {Hanno Wupper and Jan Vytopil and Martin Wieczorek and Dick de Reus},
4056    title       = {{L}_{3333}: A Simple Language with Static Typing of Hard Real-Time Constraints},
4057    institution = {Department of Informatics, Faculty of Science, Catholic University Nijmegen},
4058    year        = 1988,
4059    number      = {88-3},
4060    address     = {Katholieke Universiteit Nijmegen, Fakulteit der Wiskunde
4061                   en Natuurwetenschappen, Infomatica V, Toernooiveld, 6512
4062                   ED Nijmegen, The Netherlands},
4063    month       = apr,
4064    annote      = {A polymorphic typed lambda calculus with \begin{itemize}
4065                   \item A trivial type, ``!'', with a single element.
4066                   \item Labelled types, distinct from each other.
4067                   ``!False'' and ``!True'' are distinct types, each
4068                   containing a single value serving as boolean false and
4069                   true.  ``2'' is an abbreviation for ``!0 succ succ'', the
4070                   type containing only 2.
4071                   \item Disjunction types ``\{| !False, !True |\}''.  Interval
4072                   types are abbreviations for disjunctions.
4073                   \item Conjunction types ``\{\& real Re, real Im \&\}'', where
4074                   ``Re'' and ``Im'' are type labels that distinguish between the
4075                   fields.
4076                   \item Pair types ``\{^ a, b ^\}'', for use in recursive types
4077                   and dyadic infix functions.
4078                   \item Function types, universal types, existential types,
4079                   and subtyping (viewed as coercion), as in Fun.
4080                   \end{itemize}
4081                   Disjunctions and conjunctions types are associative and
4082                   commutative (i.e. flat).  Each type has a matching
4083                   constructor.  Functions use pattern matching on type
4084                   labels to strip labels and extract conjunction fields:
4085                   \begin{verbatim}
4086                   \lambda n {0...1000000 Guilders}. ... n ...
4087                   -- both argument and n are amounts in Guilders.
4088                   \lambda n {0...1000000} Guilders. ... n ...
4089                   -- argument in Guilders, but n is in 0...1000000.
4090                   \end{verbatim}
4091                   ``Function bundles'' (conjunctions of functions), applied
4092                   to arguments, replace Dijkstra's guarded if...fi, but the
4093                   bundles are first-class and the guards are part of their
4094                   type.
4095
4096                   The same trick used to define the type ``2'' is used to
4097                   move absolute times into the type system, to allow static
4098                   checking. ``0`'' denotes a time before the system begins
4099                   execution.  ``\#`'' denotes ``eventually'', and ``?`''
4100                   denotes ``maybe never''.  ``a\\t'' and ``a@t'' are types
4101                   of a value of type a that will be available no later
4102                   (earlier) than time t.  Universals and existentials use
4103                   subtyping to parameterize functions by start time:
4104                   \begin{verbatim}
4105                   let f {\forall t > \#`}. {a\t} \on {b\t+d}
4106                   f{then} y -- argument y must be available at time ``then''.
4107                   \end{verbatim}
4108                   Functions can return before their arguments are available
4109                   if they don't use them.  However, function {\em bundles}
4110                   can't return until their result type is known, so the
4111                   lower and upper time bounds of the bundle are the
4112                   second-last upper bound of the component functions: at
4113                   that time, there is only one alternative left.
4114
4115                   Explicit time parameterization allows slack in time
4116                   specification.  Tools could point out slack or determine
4117                   degree of parallelism.}
4118}
4119
4120@mastersthesis{Clarke90,
4121    keywords    = {concurrency, postponing requests},
4122    contributer = {pabuhr@plg},
4123    author      = {Charles L. A. Clarke},
4124    title       = {Language and Compiler Support for Synchronous Message Passing Architectures},
4125    school      = {University of Waterloo},
4126    year        = 1990,
4127    address     = {Waterloo, Ontario, Canada, N2L 3G1}
4128}
4129
4130@article{Tennent77,
4131    keywords    = {abstraction, correspondence, Pascal},
4132    contributer = {gjditchfield@plg},
4133    author      = {R. D. Tennent},
4134    title       = {Language Design Methods Based on Semantic Principles},
4135    journal     = acta,
4136    year        = 1977,
4137    volume      = 8,
4138    number      = 2,
4139    pages       = {97-112},
4140    note        = {reprinted in \cite{pldesign}},
4141    abstract    = {
4142        Two language design methods based on principles derived from the
4143        denotational approach to programming language semantics are
4144        described and illustrated by an application to the language Pascal.
4145        The principles are, firstly, the correspondence between parametric
4146        and declarative mechanisms and secondly, a principle of abstraction
4147        for programming languages adapted from set theory.  Several useful
4148        extensions and generalizations of Pascal emerge by applying these
4149        principles, including a solution to the array parameter problem,
4150        and a modularization facility.
4151    },
4152}
4153
4154@article{Liskov86,
4155    keywords    = {synchronous communication, concurrency},
4156    contributer = {pabuhr@plg},
4157    author      = {Barbara Liskov and Maurice Kerlihy and Lucy Gilbert},
4158    title       = {Limitations of Synchronous Communication with Static
4159                   Process Structure in Languages for Distributed Computing},
4160    journal     = {},
4161    volume      = {},
4162    number      = {},
4163    month       = {},
4164    year        = {},
4165    pages       = {},
4166}
4167
4168@article{Linda,
4169    keywords    = {Linda, concurrency},
4170    contributer = {pabuhr@plg},
4171    author      = {Nicholas Carriero and David Gelernter},
4172    title       = {Linda in Context},
4173    journal     = cacm,
4174    volume      = 32,
4175    number      = 4,
4176    month       = apr,
4177    year        = 1989,
4178    pages       = {444-458}
4179}
4180
4181@book{Weissman67,
4182    keywords    = {lisp},
4183    author      = {Clark Weissman},
4184    title       = {Lisp 1.5 Primer},
4185    publisher   = {Dickenson Publishing},
4186    address     = {Belmont},
4187    year        = 1967,
4188}
4189
4190@article{Sundell08,
4191    keywords    = {lock free, deque},
4192    contributer = {pabuhr@plg},
4193    author      = {H{\r{a}}kan Sundell and Philippas Tsigas},
4194    title       = {Lock-free Deques and Doubly Linked Lists},
4195    journal     = {J. Parallel Distrib. Comput.},
4196    volume      = 68,
4197    number      = 7,
4198    year        = 2008,
4199    pages       = {1008-1020},
4200}
4201
4202@misc{Matsakis17,
4203    keywords    = {Rust, Chalk, PROLOG},
4204    contributer = {a3moss@uwaterloo.ca},
4205    author      = {Nicholas Matsakis},
4206    title       = {Lowering {Rust} traits to logic},
4207    month       = jan,
4208    year        = 2017,
4209    howpublished= {\href{http://smallcultfollowing.com/babysteps/blog/2017/01/26/lowering-rust-traits-to-logic/}
4210                  {http://smallcultfollowing.com/\-babysteps/\-blog/\-2017/\-01/\-26/\-lowering-rust-traits-to-logic/}},
4211    optnote     = {Accessed: 2019-01},
4212}
4213
4214@article{Cormack89,
4215    keywords    = {parsing, LR, error recovery},
4216    contributer = {pabuhr@plg},
4217    author      = {Gordon V. Cormack},
4218    title       = {An {LR} Substring Parser for Noncorrecting Syntax Error Recovery},
4219    journal     = sigplan,
4220    volume      = 24,
4221    number      = 7,
4222    month       = jul,
4223    year        = 1989,
4224    pages       = {161-169},
4225    note        = {Proceedings of the {SIGPLAN}~'89 Conference on Programming Language Design and Implementation}
4226}
4227
4228% M
4229
4230@book{M68K,
4231    keywords    = {M680XX, Motorola},
4232    contributer = {pabuhr@plg},
4233    key         = {Motorola},
4234    title       = {M68000 Family Programmer's Reference Manual},
4235    publisher   = {Motorola},
4236    year        = 1992,
4237}
4238
4239@misc{Haberman16,
4240    keywords    = {C++ template expansion},
4241    contributer = {a3moss@uwaterloo.ca},
4242    author      = {Josh Haberman},
4243    title       = {Making arbitrarily-large binaries from fixed-size {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} code},
4244    year        = 2016,
4245    howpublished= {\href{http://blog.reverberate.org/2016/01/making-arbitrarily-large-binaries-from.html}
4246                  {
4247          {http://blog.reverberate.org/\-2016/\-01/\-making-arbitrarily-large-binaries-from.html}
4248          }},
4249    optnote     = {Accessed: 2016-09},
4250}
4251
4252@article{c++libs,
4253    keywords    = {directory structure},
4254    contributer = {gjditchfield@plg},
4255    author      = {J. M. Coggins and G. Bollella},
4256    title       = {Managing {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Libraries},
4257    journal     = sigplan,
4258    year        = 1989,
4259    month       = jun, volume = 24, number = 6, pages = {37-48},
4260    abstract    = {
4261        This paper describes a scheme we have used to manage a large
4262        library written in the C++ language.  The scheme imposes a
4263        directory structure, and represents dependency hierarchy in a
4264        globally accessible file we call the 'prelude' file.  We also
4265        discuss the structure of the description files (makefiles) used
4266        with the UNIX options we have found to be useful in reducing the
4267        size of the library, and how to minimize recompilation time after
4268        trivial changes to the source code of the library.
4269    }
4270}
4271
4272@inproceedings{mprof,
4273    keywords    = {malloc},
4274    contributer = {gjditchfield@plg},
4275    author      = {Benjamin Zorn and Paul Hilfinger},
4276    title       = {A Memory Allocation Profiler for {C} and Lisp Programs},
4277    booktitle   = {Summer 1988 {USENIX} proceedings},
4278    year        = 1988
4279}
4280
4281@manual{MMTk,
4282    keywords    = {Java memory management},
4283    contributer = {pabuhr@plg},
4284    title       = {MMTk: The Memory Management Toolkit},
4285    author      = {Steve Blackburn and Robin Garner and Daniel Frampton},
4286    month       = sep,
4287    year        = 2006,
4288    note        = {\textsf{http://cs.anu.edu.au/\-$\sim$Robin.Garner/\-mmtk-guide.pdf}},
4289}
4290
4291@article{Adve10,
4292    keywords    = {Java memory management},
4293    contributer = {pabuhr@plg},
4294    author      = {Sarita V. Adve and Hans-J. Boehm},
4295    title       = {Memory Models: A Case for Rethinking Parallel Languages and Hardware},
4296    journal     = cacm,
4297    volume      = 53,
4298    number      = 8,
4299    month       = aug,
4300    year        = 2010,
4301    pages       = {90-101},
4302    publisher   = {ACM},
4303    address     = {New York, NY, USA},
4304}
4305@techreport{Mesa,
4306    keywords    = {monitors, packages},
4307    contributer = {pabuhr@plg},
4308    author      = {James G. Mitchell and William Maybury and Richard Sweet},
4309    title       = {Mesa Language Manual},
4310    institution = {Xerox Palo Alto Research Center},
4311    number      = {CSL--79--3},
4312    month       = apr,
4313    year        = 1979
4314}
4315
4316@article{Andrews89,
4317    keywords    = {semaphore, split-binary, baton},
4318    contributer = {pabuhr@plg},
4319    author      = {Gregory R. Andrews},
4320    title       = {A Method for Solving Synronization Problems},
4321    journal     = scp,
4322    volume      = 13,
4323    number      = 4,
4324    month       = dec,
4325    year        = 1989,
4326    pages       = {1-21},
4327}
4328
4329@inproceedings{Mitchell78,
4330    keywords    = {Mesa},
4331    contributer = {pabuhr@plg},
4332    author      = {James G. Mitchell},
4333    title       = {Mesa: A Designer's User Perspective},
4334    booktitle   = {Spring CompCom 78},
4335    organization= {Sixteenth IEEE Computer Society International Conference},
4336    address     = {San Francisco, California, U.S.A.},
4337    month       = feb,
4338    year        = 1978,
4339    pages       = {36-39},
4340    note        = {IEEE Catalog No. 78CH1328-4C},
4341}
4342
4343@article{Gentleman81,
4344    keywords    = {messages, concurrency},
4345    contributer = {pabuhr@plg},
4346    author      = {W. Morven Gentleman},
4347    title       = {Message Passing between Sequential Processes:
4348                   the Reply Primitive and the Administrator Concept},
4349    journal     = spe,
4350    month       = may,
4351    year        = 1981,
4352    volume      = 11,
4353    number      = 5,
4354    pages       = {435-466}
4355}
4356
4357@article{Cormack88,
4358    keywords    = {concurrency},
4359    contributer = {pabuhr@plg},
4360    author      = {G. V. Cormack},
4361    title       = {A Micro Kernel for Concurrency in C},
4362    journal     = spe,
4363    month       = may,
4364    year        = 1988,
4365    volume      = 18,
4366    number      = 4,
4367    pages       = {485-491}
4368}
4369
4370@article{Buhr90a,
4371    keywords    = {concurrency, light-weight process, shared memory},
4372    contributer = {pabuhr@plg},
4373    author      = {Peter A. Buhr and Richard A. Stroobosscher},
4374    title       = {The $\mu${S}ystem: Providing Light-Weight Concurrency on Shared-Memory Multiprocessor Computers Running {UNIX}},
4375    journal     = spe,
4376    volume      = 20,
4377    number      = 9,
4378    month       = sep,
4379    year        = 1990,
4380    pages       = {929-963},
4381}
4382
4383@techreport{uSystem,
4384    keywords    = {C, concurrency, light-weight process, shared memory},
4385    contributer = {pabuhr@plg},
4386    author      = {Peter A. Buhr and Hamish I. Macdonald and Richard A. Stroobosscher},
4387    title       = {$\mu${S}ystem Annotated Reference Manual, Version 4.4.3},
4388    institution = {Department of Computer Science, University of Waterloo},
4389    address     = {Waterloo, Ontario, Canada, N2L 3G1},
4390    month       = sep,
4391    year        = 1994,
4392    note        = {\href{https://plg.uwaterloo.ca/~usystem/pub/uSystem/uSystem.pdf}{https://\-plg.uwaterloo.ca/\-$\sim$usystem/\-pub/\-uSystem/\-uSystem.pdf}},
4393}
4394
4395@book{Mips4000,
4396    key         = {Mips4000},
4397    title       = {MIPS R4000 Microprocessor User's Manual},
4398    publisher   = {MIPS Computer Systems Inc},
4399    year        = 1991,
4400}
4401
4402@inproceedings{Mjolner,
4403    keywords    = {Mjolner, hierarchical windows},
4404    contributer = {pabuhr@plg},
4405    author      = {G\"{o}rel Hedin and Boris Magnusson},
4406    title       = {The Mj{\o}lner Environment: Direct Interaction with Abstractions},
4407    booktitle   = {Proceedings of the European Conference on Object Oriented Programming},
4408    organization= {ECOOP'88},
4409    publisher   = {Springer},
4410    volume      = 322,
4411    editor      = {S. Gjessing and K. Nygaard},
4412    address     = {Oslo, Norway},
4413    month       = aug,
4414    year        = 1988,
4415    pages       = {41-54},
4416    note        = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
4417}
4418
4419@article{Skillicorn98,
4420    keywords    = {parallel models},
4421    contributer = {pabuhr@plg},
4422    author      = {David B. Skillicorn and Domenico Talia},
4423    title       = {Models and Languages for Parallel Computation},
4424    journal     = acmcs,
4425    volume      = 30,
4426    number      = 2,
4427    month       = jun,
4428    year        = 1998,
4429    pages       = {123-169},
4430}
4431
4432@article{Werther96,
4433    keywords    = {C++, language syntax},
4434    contributer = {pabuhr@plg},
4435    author      = {Ben Werther and Damian Conway},
4436    title       = {A Modest Proposal: {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Resyntaxed},
4437    journal     = sigplan,
4438    volume      = 31,
4439    number      = 11,
4440    month       = nov,
4441    year        = 1996,
4442    pages       = {74-82},
4443}
4444
4445@book{Alexandrescu01,
4446    keywords    = {c design-patterns programming},
4447    contributer = {pabuhr@plg},
4448    author      = {Andrei Alexandrescu},
4449    title       = {Modern C++ Design: Generic Programming and Design Patterns Applied},
4450    publisher   = {Addison-Wesley Professional},
4451    address     = {Boston},
4452    month       = feb,
4453    year        = 2001,
4454    isbn        = {0201704315},
4455}
4456
4457@book{Tanenbaum92,
4458    keywords    = {concurrency, operating systems},
4459    contributer = {pabuhr@plg},
4460    author      = {Andrew S. Tanenbaum},
4461    title       = {Modern Operating Systems},
4462    publisher   = {Prentice-Hall},
4463    address     = {Englewood Cliffs},
4464    year        = 1992,
4465}
4466
4467@article{Wirth77,
4468    keywords    = {modules, coroutines},
4469    contributer = {pabuhr},
4470    author      = {Niklaus Wirth},
4471    title       = {Modula: a Language for Modular Multiprogramming},
4472    journal     = spe,
4473    month       = {January--February},
4474    year        = 1977,
4475    volume      = 7,
4476    number      = 1,
4477    pages       = {3-35},
4478}
4479
4480@book{Harbison92,
4481    contributer = {mhcoffin},
4482    author      = {Samuel P. Harbison},
4483    title       = {Modula-3},
4484    publisher   = {Prentise Hall, Inc.},
4485    year        = {1992},
4486    comment     = {This is a textbook for learning Modula-3.}
4487}
4488
4489@techreport{Modula-3:old,
4490    keywords    = {Modula-3, inheritance, type extension},
4491    contributer = {gjditchfield@plg},
4492    author      = {Luca Cardelli and James Donahue and Lucille Glassman and Mick
4493                   Jordan and Bill Kalsow and Greg Nelson},
4494    title       = {Modula-3 Report},
4495    institution = {Systems Research Center},
4496    address     = {130 Lytton Avenue, Palo Alto, California  94301},
4497    month       = aug,
4498    year        = 1988,
4499    number      = 31
4500}
4501 
4502@article{Dueck90,
4503    keywords    = {attribute grammars},
4504    contributer = {pabuhr@plg},
4505    author      = {Gerald D. P. Dueck and Gordon V. Cormack},
4506    title       = {Modular Attribute Grammars},
4507    journal     = {The Computer Journal},
4508    month       = apr,
4509    year        = 1990,
4510    volume      = 33,
4511    number      = 2,
4512    pages       = {164-172},
4513}
4514
4515@article{Yemini85,
4516    keywords    = {exception handling},
4517    contributer = {pabuhr@plg},
4518    author      = {Shaula Yemini and Daniel M. Berry},
4519    title       = {A Modular Verifiable Exception-Handling Mechanism},
4520    journal     = toplas,
4521    month       = apr,
4522    year        = 1985,
4523    volume      = 7,
4524    number      = 2,
4525    pages       = {214-243},
4526}
4527
4528@article{Buhr95b,
4529    keywords    = {concurrency, monitors, classification},
4530    contributer = {pabuhr@plg},
4531    author      = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
4532    title       = {Monitor Classification},
4533    journal     = acmcs,
4534    volume      = 27,
4535    number      = 1,
4536    month       = mar,
4537    year        = 1995,
4538    pages       = {63-107},
4539}
4540
4541@article{Hoare74,
4542    keywords    = {monitor},
4543    contributer = {pabuhr@plg},
4544    author      = {C. A. R. Hoare},
4545    title       = {Monitors: An Operating System Structuring Concept},
4546    journal     = cacm,
4547    volume      = 17,
4548    number      = 10,
4549    month       = oct,
4550    year        = 1974,
4551    pages       = {549-557},
4552    annote      = {
4553    }
4554}
4555
4556@inbook{Buhr99a,
4557    keywords    = {concurrency, monitors, classification},
4558    contributer = {pabuhr@plg},
4559    author      = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
4560    title       = {Encyclopedia of Computer Science and Technology},
4561    chapter     = {Monitor Taxonomy},
4562    publisher   = {Marcel Dekker, Inc},
4563    volume      = {40, supplement 25},
4564    year        = 1999,
4565    pages       = {191-212},
4566}
4567%    editor     = {Allen Kent and James G. Williams},
4568
4569@manual{MPI,
4570    keywords    = {MPI},
4571    contributer = {pabuhr@plg},
4572    title       = {MPI: A Message-Passing Interface Standard, Version 3.1},
4573    organization= {Message Passing Interface Forum},
4574    address     = {University of Tennessee, Knoxville, Tennessee},
4575    month       = jun,
4576    year        = 2015,
4577    note        = {\href{http://www.mpi-forum.org/docs/mpi-3.1/mpi31-report.pdf}{http://www.mpi-forum.org/\-docs/\-mpi-3.1/\-mpi31-report.pdf}},
4578}
4579
4580@article{multilisp,
4581    keywords    = {futures, scheme},
4582    contributer = {gjditchfield@plg},
4583    author      = {Halstead, Jr.,Robert H.},
4584    title       = {Multilisp: A Language for Concurrent Symbolic Programming},
4585    journal     = toplas,
4586    volume      = 7,
4587    number      = 4,
4588    pages       = {501-538},
4589    month       = oct,
4590    year        = 1985,
4591    comment     = {
4592        (future E) begins evaluating the expression E, and
4593        returns a ``future'' representing the value.  When evaluation is
4594        finished, the value of E replaces the future.  Operations that need
4595        the future's value suspend until it is available.  Assignment and
4596        parameter passing do not suspend.  Future introduces concurrency
4597        between the calculation of a value and its use; reference to
4598        futures is a synchronization mechanism.
4599
4600        (pcall F A B ... C) concurrently evaluates F, A, B, ... C, and then
4601        applies F to the arguments.  pcall can be built from future and a
4602        ``touch'' operation.  pcall is included because it may not be easy
4603        to determine that there are no critical sections between the future
4604        expression and the code between the future call and the value's
4605        first use.
4606
4607        (delay E) is like future, but E's process does not begin until its
4608        value is needed.  It provides lazy evaluation.  Replacing delay
4609        with future would launch an infinite number of processes.
4610    }
4611}
4612
4613@techreport{Bretthauer89,
4614    keywords    = {multiple inheritance},
4615    contributer = {pabuhr@plg},
4616    author      = {Harry Bretthauer and Thomas Christaller and J\"{u}rgen Kopp}, 
4617    title       = {Multiple vs. Single Inheritance in Object-oriented Programming Languages. What do we really want?},
4618    institution = {Gesellschaft F\"{u}r Mathematik und Datenverarbeitung mbH},
4619    address     = {Schlo$\beta$ Birlinghoven, Postfach 12 40, D-5205 Sankt Augustin 1, Deutschland},
4620    number      = {Arbeitspapiere der GMD 415},
4621    month       = nov,
4622    year        = 1989,
4623}
4624
4625@inproceedings{c++:multinh,
4626    keywords    = {C++, multiple inheritance, implementation},
4627    contributer = {gjditchfield@plg},
4628    author      = {Bjarne Stroustrup},
4629    title       = {Multiple Inheritance for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4630    booktitle   = {Proceedings of the Spring '87 EUUG Conference},
4631    month       = may, year = 1987
4632}
4633
4634@inproceedings{st:mult,
4635    keywords    = {smalltalk, multiple inheritance, implementation},
4636    contributer = {gjditchfield@plg},
4637    author      = {Daniel H. H. Ingalls and A. H. Borning},
4638    title       = {Multiple Inheritance in Smalltalk-80},
4639    booktitle   = {Proceedings of the National Conference on Artificial Intelligence},
4640    month       = aug,
4641    year        = 1982,
4642    pages       = {234-238},
4643    organization= {American Association for Artificial Intelligence},
4644    comment     = {
4645        Methods are looked up in the current class, the superclasses, the
4646        supersuperclasses, etc.  The same method can be inherited
4647        repeatedly, but having different methods for the same message is an
4648        error.  Only one copy is made for multiply-inherited fields.
4649
4650        {\tt X.m} is the method m in superclass X.  {\tt super.m} is
4651        allowed if there is no ambiguity; {\tt self super.m} replaces {\tt
4652        super m}.  {\tt all.m} invokes all inherited versions of m.
4653
4654        Methods on the first-superclass chain are found as usual.  Methods
4655        from other superclasses are copied into the class dictionary.  An
4656        error method is created if inherited methods conflict.  The parser
4657        is changed to allow compound selectors.  {\tt Object
4658        messageNotUnderstood} is changed to look for compound selectors and
4659        dynamically add a method with the right name and body to the class.
4660        When methods are edited, they are copied into subclasses and
4661        compound selector versions are deleted, as appropriate.
4662    }
4663}
4664
4665@article{Lamport86I,
4666    keywords    = {software solutions, N-thread, mutual exclusions},
4667    contributer = {pabuhr@plg},
4668    author      = {Leslie Lamport},
4669    title       = {The Mutual Exclusion Problem: Part\,{I}--A Theory of Interprocess Communication},
4670    journal     = jacm,
4671    volume      = 33,
4672    number      = 2,
4673    month       = apr,
4674    year        = 1986,
4675    pages       = {313--326},
4676    numpages    = {14},
4677    publisher   = {ACM},
4678    address     = {New York, NY, USA},
4679}
4680
4681@article{Lamport86II,
4682    keywords    = {software solutions, N-thread, mutual exclusions},
4683    contributer = {pabuhr@plg},
4684    author      = {Leslie Lamport},
4685    title       = {The Mutual Exclusion Problem: Part\,{II}--Statement and Solutions},
4686    journal     = jacm,
4687    volume      = 33,
4688    number      = 2,
4689    month       = apr,
4690    year        = 1986,
4691    pages       = {327--348},
4692    numpages    = {22},
4693    publisher   = {ACM},
4694    address     = {New York, NY, USA},
4695}
4696
4697@article{Burns78,
4698    keywords    = {hardware, N-process solution, O(N)},
4699    contributer = {pabuhr@plg},
4700    author      = {James E. Burns},
4701    title       = {Mutual Exclusion with Linear Waiting Using Binary Shared Variables},
4702    journal     = {SIGACT News},
4703    volume      = 10,
4704    number      = 2,
4705    month       = {Summer},
4706    year        = 1978,
4707    pages       = {42-47},
4708}
4709
4710@inproceedings{Burns80,
4711    keywords    = {N-process software solution},
4712    contributer = {pabuhr@plg},
4713    author      = {James E. Burns and Nancy A. Lynch},
4714    title       = {Mutual Exclusion using Indivisible Reads and Writes},
4715    booktitle   = {Proceedings of the 18th Annual Allerton Conference on Communications, Control and Computing, Monticello, Illinois, USA},
4716    year        = 1980,
4717    pages       = {833-842},
4718    note        = {\href{http://groups.csail.mit.edu/tds/papers/Lynch/allertonconf.pdf}{http://\-groups.csail.mit.edu/\-tds/\-papers/\-Lynch/\-allertonconf.pdf} [Accessed on March 2014]},
4719    optnote     = {\textsf{http://\-groups.csail.mit.edu/\-tds/\-papers/\-Lynch/\-allertonconf.pdf}},
4720}
4721
4722@article{Peterson81,
4723    keywords    = {concurrency, critical section},
4724    contributer = {pabuhr@plg},
4725    author      = {G. L. Peterson},
4726    title       = {Myths About the Mutual Exclusion Problem},
4727    journal     = ipl,
4728    year        = 1981,
4729    month       = jun,
4730    volume      = 12,
4731    number      = 3,
4732    pages       = {115-116},
4733}
4734
4735% N
4736
4737@techreport{Drepper03,
4738    keywords    = {NPTL, threading, 1:1 model},
4739    contributer = {pabuhr@plg},
4740    author      = {Ulrich Drepper and Ingo Molnar},
4741    title       = {The Native POSIX Thread Library for Linux},
4742    institution = {Red Hat},
4743    year        = 2003,
4744    note        = {\href{http://www.cs.utexas.edu/~witchel/372/lectures/POSIX_Linux_Threading.pdf}{http://www.cs.utexas.edu/\-$\sim$witchel/\-372/\-lectures/\-POSIX\_Linux\_Threading.pdf}},
4745}
4746
4747@article{Haddon77,
4748    keywords    = {monitors, nested monitor calls},
4749    contributer = {pabuhr@plg},
4750    author      = {Bruce K. Haddon},
4751    title       = {Nested Monitor Calls},
4752    journal     = osr,
4753    volume      = 11,
4754    number      = 4,
4755    month       = oct,
4756    year        = 1977,
4757    pages       = {18-23},
4758}
4759
4760@inproceedings{nesting,
4761    keywords    = {},
4762    contributer = {gjditchfield@plg},
4763    author      = {Lori A. Clarke and Jack C. Wilenden and Alexander L. Wolf},
4764    title       = {Nesting in {Ada} Programs is for the Birds},
4765    booktitle   = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada}
4766        Programming Language},
4767    year        = 1980,
4768    month       = dec, pages = {139-145},
4769    note        = {SIGPLAN Notices, v. 15, n. 11},
4770    abstract    = {
4771        Given a data abstraction construct like the Ada package and in the
4772        light of current thoughts on programming methodology, we feel that
4773        nesting is an anachronism.  In this paper we propose a nest-free
4774        program style for Ada that eschews nested program units and
4775        declarations within blocks and instead heavily utilizes packages
4776        and context specifications as mechanisms for controlling
4777        visibility.  We view this proposal as a first step toward the
4778        development of programming methods that exploit the novel language
4779        features available in Ada.  Consideration of this proposal's
4780        ramifications for data flow, control flow, and overall program
4781        structure substantiates our contention that a tree structure is
4782        seldom a natural representation of a program and that nesting
4783        therefore generally interferes with program development and
4784        readability.
4785    }
4786}
4787
4788@inproceedings{Buhr88,
4789    keywords    = {nested classes, persistence},
4790    contributer = {pabuhr@plg},
4791    author      = {P. A. Buhr and C. R. Zarnke},
4792    title       = {Nesting in an Object Oriented Language is NOT for the Birds},
4793    booktitle   = {Proceedings of the European Conference on Object Oriented Programming},
4794    publisher   = {Springer},
4795    volume      = 322,
4796    editor      = {S. Gjessing and K. Nygaard},
4797    address     = {Oslo, Norway},
4798    month       = aug,
4799    year        = 1988,
4800    pages       = {128-145},
4801    note        = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
4802}
4803
4804@inproceedings{Thompson90new,
4805    keywords    = {Plan 9},
4806    contributer = {pabuhr@plg},
4807    title       = {A New {C} Compiler},
4808    author      = {Ken Thompson},
4809    booktitle   = {Proceedings of the Summer 1990 UKUUG Conference},
4810    year        = 1990,
4811    pages       = {41-51},
4812    note        = {\href{http://doc.cat-v.org/bell_labs/new_c_compilers/new_c_compiler.pdf}{http://\-doc.cat-v.org/\-bell\_labs/\-new\_c\_compilers/\-new\_c\_compiler.pdf}},
4813}
4814
4815@article{Trono94,
4816    author      = {John A. Trono},
4817    title       = {A New Exercise in Concurrency},
4818    journal     = {SIGCSE Bulletin},
4819    volume      = {26},
4820    number      = {3},
4821    month       = sep,
4822    year        = {1994},
4823    pages       = {8-10},
4824    publisher   = {ACM},
4825    address     = {New York, NY, USA},
4826}
4827
4828@article{Anderson01,
4829    keywords    = {software solutions, fast path},
4830    contributer = {pabuhr@plg},
4831    author      = {James H. Anderson and Yong-Jik Kim},
4832    title       = {A New Fast-Path Mechanism For Mutual Exclusion},
4833    journal     = {Distributed Computing},
4834    month       = jan,
4835    year        = 2001,
4836    volume      = 14,
4837    number      = 1,
4838    pages       = {17-29},
4839}
4840
4841@article{Lamport74,
4842    keywords    = {concurrency, N-Process solution, O(N)},
4843    contributer = {pabuhr@plg},
4844    author      = {Leslie Lamport},
4845    title       = {A New Solution of Dijkstra's Concurrent Programming Problem},
4846    journal     = cacm,
4847    month       = aug,
4848    year        = 1974,
4849    volume      = 17,
4850    number      = 8,
4851    pages       = {453-455},
4852}
4853
4854@book{NeWS,
4855    AUTHOR      = {James Gosling and David S. H. Rosenthal and Richelle J. Arden},
4856    TITLE       = {The {NeWS} Book},
4857    PUBLISHER   = {Springer-Verlag},
4858    YEAR        = {1989}
4859}
4860
4861@article{landin,
4862    keywords    = {},
4863    contributer = {gjditchfield@plg},
4864    author      = {P. J. Landin},
4865    title       = {The Next 700 Programing Languages},
4866    journal     = cacm,
4867    year        = 1966,
4868    volume      = 9,
4869    pages       = {157-164},
4870}
4871
4872@misc{nginx,
4873    key         = {nginx},
4874    author      = {{NGINX}},
4875    howpublished= {\href{https://www.nginx.com}{https://\-www.nginx.com}},
4876}
4877
4878@article{Herlihy05,
4879    keywords    = {Multiprocessors, concurrent data structures, dynamic data structures, memory management, nonblocking synchronization},
4880    contributer = {pabuhr@plg},
4881    author      = {Maurice Herlihy and Victor Luchangco and Paul Martin and Mark Moir},
4882    title       = {Nonblocking Memory Management Support for Dynamic-sized Data Structures},
4883    journal     = tocs,
4884    volume      = 23,
4885    number      = 2,
4886    month       = may,
4887    year        = 2005,
4888    pages       = {146-196},
4889    numpages    = {51},
4890    publisher   = {ACM},
4891    address     = {New York, NY, USA},
4892}
4893
4894% O
4895
4896@inproceedings{oop:abcl/1,
4897    keywords    = {concurrency, OOPL, futures},
4898    contributer = {gjditchfield@plg},
4899    author      = {Akinori Yonezawa and Jean-Pierre Briot and Etsuya Shibayama},
4900    title       = {Object-Oriented Concurrent Programming in {ABCL/1}},
4901    crossref    = "OOPSLA86",
4902    pages       = {258-268},
4903    comment     = {
4904        Actions for messages sent to an object are executed concurrently
4905        iff the object has no members.  A select construct specifies a set
4906        of message patterns.
4907
4908        Express messages have priority.  If an express message arrives
4909        while an ordinary message is being processed, the action for the
4910        ordinary message is suspended or aborted and the action for the
4911        express message is executed.  The sender decides which class a
4912        message belongs in.  Non-interruptible sections can be defined.
4913
4914        Message sends can be non-blocking, or can block until a reply is
4915        received, at the sender's option.  The receiver can continue to
4916        execute after sending the reply.
4917
4918        Replies can send back ``futures'', and put values in them later.
4919        Futures are queues of values, not single values.  The caller can
4920        use a ``ready?'' predicate to test for empty queue, or can use
4921        operations to get the first or all queue elements; these operations
4922        block if the queue is empty.
4923    }
4924}
4925
4926@techreport{Schmidt95,
4927    keywords    = {ACE, concurrency, library},
4928    contributer = {pabuhr@plg},
4929    author      = {Douglas C. Schmidt},
4930    title       = {An OO Encapsulation of Lightweight OS Concurrency Mechanisms in the {ACE} Toolkit},
4931    institution = {Washington University in St. Louis},
4932    year        = 1995,
4933    number      = 31,
4934    note        = {{\small\textsf{http://\-www.cs.wustl.edu/\-$\sim$schmidt/\-PDF/\-IPC\_SAP-92.pdf}}},
4935}
4936
4937@inproceedings{OOEx,
4938    keywords    = {Exceptions, object-oriented programming languages},
4939    contributer = {gjditchfield@plg},
4940    author      = {Christophe Dony},
4941    title       = {An Object-oriented Exception Handling System for an Object-oriented Language},
4942    booktitle   = {ECOOP '88. European Conference on Object-Oriented Programming},
4943    year        = 1988,
4944    pages       = {146-161},
4945    editor      = {S. Gjessing and K. Nygaard},
4946    organization= {DND, The Norwegian Computer Society},
4947    publisher   = {Springer},
4948    comment     = {
4949           Objectives:
4950           - Users can define new exceptions.
4951           - Default handlers can be attached to exceptions.
4952           - Handlers can be attached to classes.
4953           - Handlers can be attached to dynamic entities (expressions).
4954           - Exceptions propagate first along the invocation chain.
4955           - Exceptions should be hierarchically organized classes.
4956           - Handlers should take into account the exception hierarchy (i.e.,
4957             should handle raising of sub-exceptions).
4958           The ``exceptional-event'' class has two subclasses.  ``Warning''
4959           has a ``resume'' method, and ``error'' has ``exit'' and
4960           ``retry'' methods.  Signalling an exception creates an instance
4961           of the exception, whose members are used to pass information
4962           back to the handler.  Handlers are instances of class
4963           ``protect-handler'' with a method ``protect {\em expression}'',
4964           or are methods defined for the class or the exception.
4965    }
4966}
4967
4968@article{CommonObjects,
4969    author      = {A. Snyder},
4970    title       = {Object-Oriented Programming for Common Lisp},
4971    address     = {Palo Alto CA},
4972    year        = 1985,
4973    publisher   = {Software Technology Laboratory, Hewlett-Packard Laboratories},
4974    journal     = {Report ATC-85-1},
4975}
4976
4977@book{objective-c,
4978    keywords    = {},
4979    author      = {Brad J. Cox},
4980    title       = {Object-oriented programming; an evolutionary approach},
4981    publisher   = {Addison-Wesley},
4982    address     = {Boston},
4983    year        = 1986
4984}
4985
4986@misc{obj-c-book,
4987    keywords    = {objective-c},
4988    contributor = {pabuhr@plg},
4989    key         = {Objective-C},
4990    author      = {Objective-C},
4991    publisher   = {Apple Inc.},
4992    year        = 2014,
4993    howpublished= {\href{https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC}{https://\-developer.apple.com/\-library/archive/\-documentation/\-Cocoa/\-Conceptual/\-ProgrammingWithObjectiveC}},
4994    optnote     = {Accessed: 2018-03}
4995}
4996
4997@misc{xcode7,
4998    keywords    = {objective-c},
4999    contributor = {a3moss@uwaterloo.ca},
5000    key         = {Xcode},
5001    title       = {{X}code 7 Release Notes},
5002    year        = 2015,
5003    howpublished= {\href{https://developer.apple.com/library/content/documentation/Xcode/Conceptual/RN-Xcode-Archive/Chapters/xc7_release_notes.html}{https://\-developer.apple.com/\-library/\-content/\-documentation/\-Xcode/\-Conceptual/\-RN-Xcode-Archive/\-Chapters/\-xc7\_release\_notes.html}},
5004    optnote     = {Accessed: 2017-04}
5005}
5006
5007@book{Beta,
5008    keywords    = {Beta, object oriented, concurrency, exceptions},
5009    contributer = {pabuhr@plg},
5010    author      = {Ole Lehrmann Madsen and Birger M{\o}ller-Pedersen and Kristen Nygaard},
5011    title       = {Object-oriented Programming in the {BETA} Programming Language},
5012    publisher   = {Addison-Wesley},
5013    address     = {Boston},
5014    year        = 1993,
5015}
5016
5017@article{Flavors,
5018    author      = {D. A. Moon},
5019    title       = {Object-Oriented Programming with Flavors},
5020    address     = {Portland OR},
5021    month       = sep,
5022    year        = 1986,
5023    journal     = {Proc. ACM Conf. on Object-Oriented Systems, Languages and Applications},
5024}
5025
5026@article{Buhr00b,
5027    keywords    = {concurrency, C++, real-time},
5028    contributer = {pabuhr@plg},
5029    author      = {Peter A. Buhr and Ashif S. Harji and Philipp E. Lim and Jiongxiong Chen},
5030    title       = {Object-Oriented Real-Time Concurrency},
5031    journal     = sigplan,
5032    volume      = 35,
5033    number      = 10,
5034    month       = oct,
5035    year        = 2000,
5036    pages       = {29-46},
5037    note        = {OOPSLA'00, Oct. 15--19, 2000, Minneapolis, Minnesota, U.S.A.},
5038}
5039
5040@book{Meyer88,
5041    keywords    = {Eiffel},
5042    contributer = {pabuhr@plg},
5043    author      = {Bertrand Meyer},
5044    title       = {Object-oriented Software Construction},
5045    publisher   = {Prentice-Hall},
5046    address     = {Englewood Cliffs},
5047    year        = {1988},
5048    series      = {Prentice-Hall International Series in Computer Science},
5049}
5050
5051@article{objectPascal,
5052    keywords    = {objects, modules},
5053    contributer = {gjditchfield@plg},
5054    author      = {Larry Tesler},
5055    title       = {Object Pascal Report},
5056    journal     = {Structured Language World},
5057    year        = 1985,
5058    volume      = 9,
5059    number      = 3,
5060}
5061
5062@misc{obj-c:next,
5063    keywords    = {categories, protocols, Objective C},
5064    contributor = {gjditchfield@angus},
5065    author      = {NeXT Computer, Inc.},
5066    title       = {Objective C Extensions},
5067    howpublished= {On-line documentation in ``NEXTSTEP 3.1 Developer''},
5068    year        = 1993
5069}
5070
5071@book{Galletly96,
5072    keywords    = {occam},
5073    author      = {John Galletly},
5074    title       = {{OCCAM} 2: Including {OCCAM} 2.1},
5075    publisher   = {{UCL} (University College London) Press},
5076    address     = {London},
5077    edition     = {2nd},
5078    year        = 1996,
5079}
5080
5081@techreport{Morrison88,
5082    keywords    = {objects, concurrency, persistence},
5083    contributer = {pabuhr@plg},
5084    author      = {R. Morrison and A. L. Brown and R. Carrick and R. Connor and A. Dearle},
5085    title       = {On the integration of Object-Oriented and Process-Oriented computation in persistent environments},
5086    institution = {Department of Computational Science, University of St. Andrews, Scotland},
5087    number      = {PPRR 57},
5088    month       = jan,
5089    year        = 1988,
5090}
5091
5092@article{Peterson73,
5093    keywords    = {goto, structured programming},
5094    contributer = {pabuhr@plg},
5095    author      = {W. W. Peterson and T. Kasami and N. Tokura},
5096    title       = {On the Capabilities of While, Repeat, and Exit Statements},
5097    journal     = cacm,
5098    month       = aug,
5099    year        = 1973,
5100    volume      = 16,
5101    number      = 8,
5102    pages       = {503-512}
5103}
5104
5105@article{Baker82,
5106    keywords    = {compilation},
5107    contributer = {gjditchfield@plg},
5108    author      = {Theodore P. Baker},
5109    title       = {A One-Pass Algorithm for Overload Resolution in {Ada}},
5110    journal     = toplas,
5111    year        = 1982,
5112    month       = oct,
5113    volume      = 4,
5114    number      = 4,
5115    pages       = {601-614},
5116    abstract    = {
5117        A simple method is presented for detecting ambiguities and finding
5118        the correct interpretations of expressions in the programming
5119        language Ada.  Unlike previously reported solutions to this
5120        problem, which require multiple passes over a tree structure, the
5121        method described here operates in one bottom-up pass, during which
5122        a directed acyclic graph is produced.  The correctness of this
5123        approach is demonstrated by a brief formal argument.
5124    },
5125    comment     = {
5126        See also \cite{D:overload}.
5127        }
5128}
5129
5130@manual{OpenMP,
5131    keywords    = {concurrency, openmp, spmd},
5132    contributer = {pabuhr@plg},
5133    key         = {OpenMP},
5134    title       = {OpenMP Application Program Interface, Version 4.5},
5135    month       = nov,
5136    year        = 2015,
5137    note        = {\href{https://www.openmp.org/wp-content/uploads/openmp-4.5.pdf}{https://\-www.openmp.org/\-wp-content/\-uploads/\-openmp-4.5.pdf}},
5138}
5139
5140@book{Deitel04,
5141    keywords    = {concurrency, operating systems},
5142    contributer = {pabuhr@plg},
5143    author      = {Harvey M. Deitel and Paul J. Deitel and David R. Choffnes},
5144    title       = {Operating Systems},
5145    publisher   = {Pearson Prentice-Hall},
5146    address     = {Englewood Cliffs},
5147    year        = 2004,
5148    edition     = {3rd},
5149}
5150
5151@book{Stalling98,
5152    keywords    = {concurrency, operating systems},
5153    contributer = {pabuhr@plg},
5154    author      = {William Stallings},
5155    title       = {Operating Systems: Internals and Design Principles},
5156    publisher   = {Prentice-Hall},
5157    address     = {Englewood Cliffs},
5158    year        = 1998,
5159    edition     = {3rd},
5160}
5161
5162@book{Stalling01,
5163    keywords    = {concurrency, operating systems},
5164    contributer = {pabuhr@plg},
5165    author      = {William Stallings},
5166    title       = {Operating Systems: Internals and Design Principles},
5167    publisher   = {Prentice-Hall},
5168    address     = {Englewood Cliffs},
5169    year        = 2001,
5170    edition     = {4th},
5171}
5172
5173@book{Silberschatz91,
5174    keywords    = {concurrency, operating systems},
5175    contributer = {pabuhr@plg},
5176    author      = {Abraham Silberschatz and James L. Peterson and Peter Galvin},
5177    title       = {Operating System Concepts},
5178    publisher   = {Addision-Wesley},
5179    address     = {Boston},
5180    year        = 1991,
5181    edition     = {3rd},
5182}
5183
5184@book{Tanenbaum87,
5185    keywords    = {concurrency, operating systems},
5186    contributer = {pabuhr@plg},
5187    author      = {Andrew S. Tanenbaum},
5188    title       = {Operating Systems : Design and Implementation},
5189    publisher   = {Prentice-Hall},
5190    address     = {Englewood Cliffs},
5191    series      = {Software Series},
5192    year        = 1987,
5193}
5194
5195@book{Hansen73,
5196    keywords    = {monitors},
5197    contributer = {pabuhr@plg},
5198    author      = {Per {Brinch Hansen}},
5199    title       = {Operating System Principles},
5200    publisher   = {Prentice-Hall},
5201    address     = {Englewood Cliffs},
5202    year        = 1973,
5203}
5204
5205@book{Bic03,
5206    keywords    = {concurrency, operating systems},
5207    contributer = {pabuhr@plg},
5208    author      = {Lubomir F. Bic and Alan C. Shaw},
5209    title       = {Operating System Principles},
5210    publisher   = {Prentice-Hall},
5211    address     = {Englewood Cliffs},
5212    year        = 2003,
5213}
5214
5215@techreport{milner88,
5216    keywords    = {},
5217    contributer = {gjditchfield@plg},
5218    author      = {Robin Milner},
5219    title       = {Operational and Algebraic Semantics of Concurrent Processes},
5220    institution = {Laboratory for Foundations of Computer Science},
5221    year        = 1988,
5222    address     = {Department of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ},
5223    month       = feb,
5224    number      = {ECS-LFCS-88-46}
5225}
5226
5227@article{Ganzinger80,
5228    contributer = {a3moss@uwaterloo.ca},
5229    author      = {Ganzinger, Harald and Ripken, Knut},
5230    title       = {Operator Identification in {ADA}: Formal Specification, Complexity, and Concrete Implementation},
5231    journal     = {SIGPLAN Notices},
5232    issue_date  = {February 1980},
5233    volume      = {15},
5234    number      = {2},
5235    month       = feb,
5236    year        = {1980},
5237    issn        = {0362-1340},
5238    pages       = {30--42},
5239    numpages    = {13},
5240    url         = {http://doi.acm.org/10.1145/947586.947589},
5241    doi         = {10.1145/947586.947589},
5242    publisher   = {ACM},
5243    address     = {New York, NY, USA}
5244}
5245
5246@article{Ford82,
5247    keywords    = {},
5248    contributer = {pabuhr@plg},
5249    author      = {G. Ford and B. Hansche},
5250    title       = {Optional, Repeatable, and Varying Type Parameters},
5251    journal     = sigplan,
5252    volume      = 17,
5253    number      = 2,
5254    month       = feb,
5255    year        = 1982,
5256    pages       = {41-48},
5257}
5258
5259@manual{pli,
5260    keywords    = {PL/I},
5261    contributer = {gjditchfield@plg},
5262    key         = {IBM},
5263    title       = {{OS} and {DOS} {PL/I} Reference Manual},
5264    organization= {International Business Machines},
5265    edition     = {1st},
5266    month       = sep,
5267    year        = 1981,
5268    note        = {Manual GC26-3977-0},
5269}
5270
5271@techreport{D:overload,
5272    keywords    = {overload resolution, compilation},
5273    contributer = {gjditchfield@plg},
5274    author      = {M. Dausmann et. al.},
5275    title       = {Overloading in {Ada}},
5276    institution = {Universitat Karlsruhe},
5277    year        = 1979,
5278    number      = {23/79},
5279    comment     = {
5280        Probably the earliest description of the two-pass (bottom-up,
5281        top-down) overload resolution algorithm. See also
5282        \cite{PW:overload,WS:overload,PDM:overload,Cor:overload,Bak:overload}.
5283    }
5284}
5285
5286@article{EB87,
5287    keywords    = {packages, private types, assignment, equality},
5288    contributer = {gjditchfield@plg},
5289    author      = {J. Dana Eckart and Richard J. LeBlanc},
5290    title       = {Overloading in the {Ada} Language: Is it too restrictive?},
5291    journal     = {Computer Languages},
5292    year        = 1987,
5293    volume      = 12,
5294    number      = {3/4},
5295    pages       = {163-172},
5296    abstract    = {
5297        Packages in the Ada language provide a mechanism for extending the
5298        language through the development of additional data types.  Such
5299        types can be better integrated into the language using operator
5300        overloading; however, key limitations prevent new types from being
5301        transparently integrated into the language.  Allowing function
5302        names to overload private type names would give a cleaner and
5303        clearer mechanism for building values of these types.  Furthermore,
5304        by allowing redefinitions of ``:='' and by making it easier to
5305        overload ``='' for private types, Ada coud be transformed into a
5306        more expressive language.
5307    }
5308}
5309
5310@article{PW:overload,
5311    keywords    = {compilation},
5312    contributer = {gjditchfield@plg},
5313    author      = {Guido Persch and Georg Winterstein and Manfred Dausman and Sophia Drossopoulou},
5314    title       = {Overloading in Preliminary {Ada}},
5315    journal     = sigplan,
5316    year        = 1980,
5317    month       = nov, volume = 15, number = 11, pages = {47-56},
5318    note        = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada} Programming Language}, 
5319    comment     = {
5320        The two-pass (bottom-up, then top-down) algorithm, with a proof
5321        that two passes suffice.  See also \cite{D:overload}.
5322    }
5323}
5324
5325@article{SR,
5326    keywords    = {concurrency, messages, rendezvous},
5327    contributer = {pabuhr@plg},
5328    author      = {Gregory R. Andrews and Ronald A. Olsson and Michael Coffin and
5329                  Irving Elshoff and Kelvin Nilsen and Titus Purdin and Gregg Townsend},
5330    title       = {An Overview of the {SR} Language and Implementation},
5331    journal     = toplas,
5332    month       = jan,
5333    year        = 1988,
5334    volume      = 10,
5335    number      = 1,
5336    pages       = {51-86},
5337}
5338
5339% P
5340
5341@article{Andrews91,
5342    keywords    = {general concurrency},
5343    contributer = {pabuhr@plg},
5344    author      = {Gregory R. Andrews},
5345    title       = {Paradigms for Process Interaction in Distributed Programs},
5346    journal     = acmcs,
5347    volume      = 23,
5348    number      = 1,
5349    month       = mar,
5350    year        = 1991,
5351    pages       = {49-90},
5352}
5353
5354@book{PPC++,
5355    keywords    = {concurrency, parallel, distributed, C++},
5356    contributer = {pabuhr@plg},
5357    editor      = {Gregory V. Wilson and Paul Lu},
5358    title       = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5359    publisher   = {MIT Press},
5360    series      = {Scientific and Engineering Computation Series},
5361    year        = 1996,
5362    pages       = {1-42},
5363}
5364
5365@incollection{Stroustrup96,
5366    keywords    = {concurrency, C++},
5367    contributer = {pabuhr@plg},
5368    author      = {Bjarne Stroustrup},
5369    title       = {A Perspective on Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5370    editor      = {Gregory V. Wilson and Paul Lu},
5371    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5372    publisher   = {MIT Press},
5373    series      = {Scientific and Engineering Computation Series},
5374    year        = 1996,
5375    pages       = {xxvi-xxvii},
5376}
5377
5378@incollection{Yang96b,
5379    keywords    = {concurrency, C++},
5380    contributer = {pabuhr@plg},
5381    author      = {Shelby X. Yang and Dennis Gannon and Peter Beckman and Jacob Gotwals and Neelakantan Sundaresan},
5382    editor      = {Gregory V. Wilson and Paul Lu},
5383    title       = {p{C}++},
5384    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5385    publisher   = {MIT Press},
5386    address     = {Cambridge},
5387    series      = {Scientific and Engineering Computation Series},
5388    pages       = {507-546},
5389    year        = 1996,
5390}
5391
5392@article{goguen84,
5393    keywords    = {},
5394    contributer = {gjditchfield@plg},
5395    author      = {Goseph A. Goguen},
5396    title       = {Parameterized Programming},
5397    journal     = ieeese,
5398    year        = 1984,
5399    month       = sep, volume = "SE-10", number = 5, pages = {528-543},
5400    abstract    = {
5401        Parameterized programming is a powerful technique for the reliable
5402        reuse of software.  In this technique, modules are parameterized
5403        over very general interfaces that describe what properties of an
5404        environment are required for the module to work correctly.
5405        Reusability is enhanced by the flexibility of the parameterization
5406        mechanism proposed here.  Reliability is further enhanced by
5407        permitting interface requirements to include more than purely
5408        syntactic information.  This paper introduces three new ideas that
5409        seem especially useful in supporting parameterized programming: 1)
5410        {\em theories}, which declare global properties of program modules
5411        and interfaces; 2) {\em views}, which connect theories with program
5412        modules in an elegant way; and 3) {\em module expressions}, a kind
5413        of general structured program transformation which produces new
5414        modules by modifying and combining existing modules.  Although
5415        these ideas are illustrated with some simple examples in the OBJ
5416        programming language, they should also be taken as proposals for an
5417        Ada library system, for adding modules to Prolog, and as
5418        considerations for future language design efforts.  OBJ is an
5419        ultra-high level programming language, based upon rewrite rules,
5420        that incorporates these ideas, and many others from modern
5421        programming methodology.
5422    }
5423}
5424
5425@inproceedings{c++:templates,
5426    author      = {Bjarne Stroustrup},
5427    contributer = {gjditchfield@plg},
5428    title       = {Parameterized Types for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5429    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
5430    organization= {USENIX Association},
5431    year        = 1988, pages = {1-18}
5432}
5433
5434@inproceedings{Boehm85,
5435    keywords    = {second-order unification},
5436    contributer = {gjditchfield@plg},
5437    author      = {Hans-J. Boehm},
5438    title       = {Partial Polymorphic Type Inference is Undecidable},
5439    booktitle   = {26th Annual Symposium on Foundations of Computer Science},
5440    year        = 1985,
5441    pages       = {339-345},
5442    organization= {IEEE Computer Society},
5443    publisher   = {IEEE Computer Society Press},
5444    address     = {1730 Massachusetts Avenue, N.W, Washington, D.C. 20036-1903},
5445    summary     = {
5446        Given a base typed lambda calculus with function types, type
5447        abstractions, and a recursive expression \(\mbox{fix } x:t.e\),
5448        then type inference for the partially typed language
5449        \begin{eqnarray}
5450        \lambda x:\tau.e        &\Rightarrow& \lambda x.e       \\
5451        \mbox{fix } x:\tau.e    &\Rightarrow& \mbox{fix } x.e   \\
5452        e \tau                  &\Rightarrow& e ?
5453        \end{eqnarray}
5454        is undecidable.
5455    }
5456}
5457
5458@book{Pascal,
5459    keywords    = {Pascal},
5460    contributer = {pabuhr@plg},
5461    author      = {Kathleen Jensen and Niklaus Wirth},
5462    title       = {{P}ascal User Manual and Report, ISO Pascal Standard},
5463    publisher   = {Springer--Verlag},
5464    year        = 1991,
5465    edition     = {4th},
5466    note        = {Revised by Andrew B. Mickel and James F. Miner}
5467}
5468
5469@book{Pascal:old,
5470    keywords    = {Pascal},
5471    contributer = {pabuhr@plg},
5472    author      = {Kathleen Jensen and Niklaus Wirth},
5473    title       = {{P}ascal User Manual and Report},
5474    publisher   = {Springer--Verlag},
5475    year        = 1975,
5476    edition     = {1st},
5477}
5478
5479@article{Turba85,
5480    keywords    = {Pascal, exception handling, inheritance},
5481    contributer = {pabuhr@plg},
5482    author      = {Thomas N. Turba},
5483    title       = {The {P}ascal Exception Handling Proposal},
5484    journal     = sigplan,
5485    volume      = 20,
5486    number      = 8,
5487    month       = aug,
5488    year        = 1985,
5489    pages       = {93-98},
5490}
5491
5492@manual{Pascal/VS,
5493    keywords    = {PL/I},
5494    contributer = {pabuhr@plg},
5495    key         = {IBM},
5496    title       = {{P}ascal/{VS} Language Reference Manual},
5497    organization= {International Business Machines},
5498    edition     = {1st},
5499    year        = 1981,
5500    note        = {Manual SH20-6168-1},
5501}
5502
5503@misc{perf,
5504    contributer = {pabuhr@plg},
5505    key         = {perf},
5506    author      = {perf},
5507    howpublished= {\href{https://perf.wiki.kernel.org/index.php/Tutorial}{https://\-perf.wiki.kernel.org/\-index.php/\-Tutorial}},
5508}
5509
5510@misc{Verch12,
5511    contributer = {pabuhr@plg},
5512    author      = {Shaun Verch},
5513    title       = {Performance Analysis of 64-Bit Capriccio},
5514    month       = may,
5515    year        = 2012,
5516    howpublished= {\href{http://cs.brown.edu/research/pubs/theses/masters/2012/verch.pdf}{http://cs.brown.edu/\-research/\-pubs/\-theses/\-masters/\-2012/\-verch.pdf}},
5517    optnote     = {Accessed: 2013-10-4}
5518}
5519
5520@article{Anderson90,
5521    keywords    = {spin locks, back off, performance},
5522    contributer = {pabuhr@plg},
5523    author      = {Thomas E. Anderson},
5524    title       = {The Performance of Spin Lock Alternatives for Shared-Memory Multiprocessors},
5525    journal     = ieeepds,
5526    month       = jan,
5527    year        = 1990,
5528    volume      = 1,
5529    number      = 1,
5530    pages       = {6-16},
5531}
5532
5533@inproceedings{Conchon07,
5534    keywords    = {persistent array, union-find},
5535    contributer = {a3moss@uwaterloo.ca},
5536    title       = {A persistent union-find data structure},
5537    author      = {Conchon, Sylvain and Filli{\^a}tre, Jean-Christophe},
5538    booktitle   = {Proceedings of the 2007 workshop on Workshop on ML},
5539    pages       = {37--46},
5540    year        = {2007},
5541    organization= {ACM}
5542}
5543
5544@article{poly,
5545    keywords    = {Poly, Standard ML, Russell, persistence},
5546    contributer = {gjditchfield@plg},
5547    author      = {David C. J. Matthews},
5548    title       = {Poly Manual},
5549    journal     = sigplan,
5550    month       = sep, year = 1985,
5551    volume      = 20, number = 9, pages = {52-76}
5552}
5553
5554@techreport{Atkinson87b,
5555    keywords    = {naming, persistence},
5556    contributer = {pabuhr@plg},
5557    author      = {M. P. Atkinson and R. Morrison},
5558    title       = {Polymorphic Names and Iterations},
5559    institution = {Universities of Glasgow and St. Andrews, Scotland},
5560    number      = {PPRR-53-87},
5561    month       = nov,
5562    year        = 1987,
5563}
5564
5565@book{Harland,
5566    keywords    = {},
5567    author      = {David M. Harland},
5568    title       = {Polymorphic Programming Languages: Design and Implementation},
5569    publisher   = {Ellis Horwood},
5570    year        = 1984,
5571    series      = {Computers and their Applications},
5572    address     = {Market Cross House, Cooper Street, Chichester, West Sussex, PO19 1EB, England},
5573    summary     = {
5574        The principles of Procedural Abstraction, Data Type Completeness,
5575        Declaration Correspondence, and Orthogonality are ruthlessly applied
5576        to the design of a polymorphic language.
5577    }
5578}
5579
5580@unpublished{poa,
5581    keywords    = {Force N, type inference, reusability, transcendance},
5582    contributer = {gjditchfield@plg},
5583    author      = {G. V. Cormack and A. K. Wright},
5584    title       = {Polymorphism, Overloading, and Abstraction},
5585    note        = {personal communication}
5586}
5587
5588@inproceedings{forceone:impl,
5589    keywords    = {Parametric polymorphism, ForceOne},
5590    contributer = {gjditchfield@plg},
5591    author      = {G. V. Cormack and A. K. Wright},
5592    title       = {Polymorphism in the Compiled Language {ForceOne}},
5593    booktitle   = {Proceedings of the 20th Hawaii International Conference on Systems Sciences},
5594    month       = jan,
5595    year        = 1987,
5596    pages       = {284-292},
5597}
5598
5599@incollection{POOL-T,
5600    keywords    = {objects, concurrency},
5601    contributer = {pabuhr@plg},
5602    author      = {Pierre America},
5603    title       = {POOL-T: A Parallel Object-Oriented Language},
5604    booktitle   = {Object-Oriented Concurrent Programming},
5605    publisher   = {The MIT Press},
5606    year        = 1987,
5607    pages       = {199-220},
5608    editor      = {Akinori Yonezawa and Mario Tokoro}
5609}
5610
5611@article{Hardgrave76,
5612    keywords    = {positional, keyword, parameters, arguments},
5613    contributer = {pabuhr@plg},
5614    author      = {W. T. Hardgrave},
5615    title       = {Positional versus Keyword Parameter Communication in Programming Languages},
5616    journal     = sigplan,
5617    volume      = 11,
5618    number      = 5,
5619    month       = may,
5620    year        = 1976,
5621    pages       = {52-58},
5622}
5623
5624@inproceedings{Rafkind09,
5625    keywords    = {accurate, C programming language, conservative, garbage collection, precise},
5626    contributer = {pabuhr@plg},
5627    author      = {Rafkind, Jon and Wick, Adam and Regehr, John and Flatt, Matthew},
5628    title       = {Precise Garbage Collection for C},
5629    booktitle   = {Proceedings of the 2009 International Symposium on Memory Management},
5630    series      = {ISMM '09},
5631    year        = {2009},
5632    location    = {Dublin, Ireland},
5633    pages       = {39-48},
5634    publisher   = {ACM},
5635    address     = {New York, NY, USA},
5636}
5637
5638@article{Ada:preliminary,
5639    keywords    = {Ada},
5640    contributer = {pabuhr@plg},
5641    author      = {Jean D. Ichbiah and Bernd Krieg-Brueckner and Brian A. Wichmann
5642                   and Henry F. Ledgard and Jean-Claude Heliard and Jean-Raymond Abrial
5643                   and John G. P. Barnes and Olivier Roubine},
5644    title       = {Preliminary {Ada} Reference Manual},
5645    journal     = sigplan,
5646    volume      = 14,
5647    number      = 6,
5648    month       = jun,
5649    year        = 1979,
5650    note        = {Part A},
5651}
5652
5653@techreport{Forsythe,
5654    author      = {John C. Reynolds},
5655    title       = {Preliminary Design of the Programming Language {Forsythe}},
5656    institution = {Carnegie Mellon University},
5657    number      = {CMU-CS-88-159},
5658    month       = jun,
5659    year        = 1988,
5660}
5661
5662@article{PRESTO,
5663    keywords    = {concurrency, threads},
5664    contributer = {dgharriss@plg},
5665    author      = {B. N. Bershad and E. D. Lazowska and H. M. Levy},
5666    title       = {{PRESTO}: A System for Object-oriented Parallel Programming},
5667    journal     = spe,
5668    volume      = 18,
5669    number      = 8,
5670    month       = aug,
5671    year        = 1988,
5672    pages       = {713-732}
5673}
5674
5675@book{Ben-Ari82,
5676    keywords    = {concurrency, parallel, programming languages},
5677    contributer = {pabuhr@plg},
5678    author      = {Mordechai Ben-Ari},
5679    title       = {Principles of Concurrent Programming},
5680    publisher   = {Prentice-Hall International},
5681    address     = {Englewood Cliffs},
5682    year        = 1982,
5683}
5684
5685@book{Tennent81,
5686    author      = {R. D. Tennent},
5687    title       = {Principles of Programming Languages},
5688    publisher   = {Prentice-Hall International},
5689    address     = {Englewood Cliffs},
5690    year        = 1981,
5691    series      = {Series in Computer Science}
5692}
5693
5694@article{Lister77,
5695    keywords    = {monitors, nested monitor calls},
5696    contributer = {pabuhr@plg},
5697    author      = {Andrew Lister},
5698    title       = {The Problem of Nested Monitor Calls},
5699    journal     = osr,
5700    volume      = 11,
5701    number      = 3,
5702    month       = jul,
5703    year        = 1977,
5704    pages       = {5-7},
5705}
5706
5707@article{psa:persistence,
5708    keywords    = {persistence, first-class procedures, closure, PS-Algol, Abstract Data Types},
5709    contributer = {gjditchfield@plg},
5710    author      = {Malcolm P. Atkinson and Ronald Morrison},
5711    title       = {Procedures as Persistent Data Objects},
5712    journal     = toplas,
5713    volume      = {7},    number = {4},
5714    pages       = {539-559},
5715    month       = oct, year = 1985,
5716    comment     = {
5717        PS-Algol has ``structures'', accessible only through ``pntrs''.
5718        Pntrs can refer to any type of structure.  Field references involve
5719        a run-time check.  This, plus first-class procedures, can simulate
5720        abstract data types.  Procedure variables operating on pntrs
5721        simulate ADT operations.  A block defines a structure to implement
5722        the ADT, and assigns procedures to the variables.  Functions
5723        returning structures containing procedures  simulate multiple
5724        implementations and parameterized ADTs.
5725
5726        An outer procedure that returns a procedure that contains
5727        (non-local) references to the outer procedure's parameters
5728        implements partial evaluation.
5729
5730        Modules can be simulated like ADT's.  The module itself is a
5731        structure instance that is placed in persistent storage, and the
5732        module is imported by fetching it from the persistent store.
5733        Multiple instances of modules are easy.  Installation of new
5734        versions can be done by replacing the version in the database.
5735    }
5736}
5737
5738@article{Procol89,
5739    keywords    = {active objects, object-oriented languages, object-based languages, explicit per-object protocol},
5740    contributer = {akgoel@plg},
5741    author      = {Jan van den Bos and Chris Laffra},
5742    title       = {PROCOL: A Parallel Object Language with Protocols},
5743    journal     = sigplan,
5744    volume      = 24,
5745    number      = 10,
5746    month       = oct,
5747    year        = 1989,
5748    pages       = {95-102},
5749    note        = {Proceedings of the OOPSLA'89 Conference, Oct. 1--6, 1989, New Orleans, Lousiana},
5750    abstract    = {},
5751}
5752
5753@inproceedings{Buhr98,
5754    keywords    = {profiling, monitoring, visualization},
5755    contributer = {pabuhr@plg},
5756    author      = {Peter A. Buhr and Robert Denda},
5757    title       = {{$\mu$Profiler} : Profiling User-Level Threads in a Shared-Memory Programming Environment},
5758    booktitle   = {Proc. of 2nd Inter. Symp. on Computing in Object-Oriented Parallel Environments},
5759    series      = {Lecture Notes in Computer Science},
5760    publisher   = {Springer-Verlag},
5761    volume      = 1505,
5762    opteditor   = {Dennis Caromel and Rodney R. Oldehoeft and Marydell Tholburn},
5763    address     = {Santa Fe, New Mexico, U.S.A.},
5764    month       = dec,
5765    year        = 1998,
5766    pages       = {159-166},
5767}
5768
5769@book{PowerPC,
5770    key         = {PowerPC processor},
5771    title       = {Programming Environments Manual for 32-Bit Implementations of the PowerPC ArchitectureARM Architecture},
5772    publisher   = {Freescale Semiconductor},
5773    volume      = {MPCFPE32B},
5774    edition     = {Rev. 3},
5775    month       = 9,
5776    year        = 2005,
5777}
5778
5779@book{Butenhof97,
5780    keywords    = {PThreads, concurrency},
5781    contributer = {pabuhr@plg},
5782    author      = {David R. Butenhof},
5783    title       = {Programming with {POSIX} Threads},
5784    publisher   = {Addison-Wesley},
5785    address     = {Boston},
5786    series      = {Professional Computing},
5787    year        = 1997,
5788}
5789
5790@book{SETL,
5791    keywords    = {SETL},
5792    contributer = {pabuhr@plg},
5793    author      = {J. T. Schwartz and R. B. K. Dewar and E. Dubinsky and E. Schonberg},
5794    title       = {Programming with Sets: An Introduction to {SETL}},
5795    publisher   = {Springer},
5796    address     = {New York, NY, USA},
5797    year        = 1986,
5798}
5799
5800@book{Genuys68,
5801    keywords    = {contains Dijkstra's Cooperating Sequential Processes},
5802    contributer = {pabuhr@plg},
5803    editor      = {F. Genuys},
5804    title       = {Programming Languages},
5805    publisher   = {Academic Press},
5806    address     = {London, New York},
5807    year        = 1968,
5808    note        = {NATO Advanced Study Institute, Villard-de-Lans, 1966}
5809}
5810
5811@manual{ANSI99:C,
5812    keywords    = {ANSI C 99},
5813    contributer = {pabuhr@plg},
5814    title       = {Programming Languages -- {C}},
5815    organization= {International Standard ISO/IEC 9899:1999 (E)},
5816    publisher   = {American National Standards Institute},
5817    address     = {www.ansi.org},
5818    year        = 1999,
5819}
5820
5821@manual{ANSI98:C++,
5822    keywords    = {ANSI C++ 98},
5823    contributer = {pabuhr@plg},
5824    key         = {C++98},
5825    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language ISO/IEC 14882:1998},
5826    edition     = {1st},
5827    publisher   = {International Standard Organization},
5828    address     = {\href{https://www.iso.org/standard/25845.html}{https://\-www.iso.org/\-standard/\-25845.html}},
5829    year        = 1998,
5830}
5831
5832@manual{C++14,
5833    keywords    = {ISO/IEC C++ 14},
5834    contributer = {pabuhr@plg},
5835    key         = {C++14},
5836    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language ISO/IEC 14882:2014},
5837    edition     = {4th},
5838    publisher   = {International Standard Organization},
5839    address     = {\href{https://www.iso.org/standard/64029.html}{https://\-www.iso.org/\-standard/\-64029.html}},
5840    year        = 2014,
5841}
5842
5843@manual{MS:VisualC++,
5844    keywords    = {Microsoft Visual C++},
5845    contributer = {pabuhr@plg},
5846    title       = {Microsoft Visual {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} .NET Language Reference},
5847    organization= {Microsoft Corporation},
5848    year        = 2002,
5849    note        = {Microsoft Press, Redmond, Washington, U.S.A.},
5850}
5851
5852@article{HasselBring00,
5853    keywords    = {concurrency, prototyping},
5854    contributer = {pabuhr@plg},
5855    author      = {Wilhelm Hasselbring},
5856    title       = {Programming Languages and Systems for Prototyping Concurrent Applications},
5857    journal     = acmcs,
5858    volume      = 32,
5859    number      = 1,
5860    month       = mar,
5861    year        = 2000,
5862    pages       = {43-79},
5863}
5864
5865@article{LLgen,
5866    keywords    = {ll(1), parser generator, separate compilation},
5867    contributer = {gjditchfield@plg},
5868    author      = {Dick Grune and Ceriel J. J. Jacobs},
5869    title       = {A Programmer-friendly LL(1) Parser Generator},
5870    journal     = spe,
5871    month       = jan, year = 1988,
5872    volume      = 18, number = 1, pages = {29-33},
5873    comment     = {
5874        LLgen generates C-language recursive-descent parsers.  The input
5875        contains procedure-like rules with alternation and repetition
5876        constructs on the right, and (typed) parameters on the left.
5877        C actions are specified between items in the right side.
5878        Alternation and repetition (reduce and shift) conflicts can be
5879        resolved statically or at run time.
5880
5881        A grammar can be specified in several files.  All files must be
5882        submitted to LLgen at once, but if the C file generated is no
5883        different from the old version, then the old version is not
5884        replaced and hence need not be recompiled, which saves lots of
5885        time.
5886
5887        When an incorrect token is found, the automatic error recovery
5888        algorithm discards tokens until an ``acceptable'' token is found;
5889        if the acceptable token is not correct, a correct one is inserted.
5890    }
5891}
5892
5893@techreport{russell,
5894    keywords    = {Russell},
5895    contributer = {gjditchfield@plg},
5896    author      = {H. Boehm and A. Demers and J. Donahue},
5897    title       = {A Programmer's Introduction to Russell},
5898    institution = {Rice University},
5899    year        = 1985,
5900    number      = {85-16}
5901}
5902
5903@techreport{PDM89,
5904    keywords    = {existential types, universal types},
5905    contributer = {gjditchfield@plg},
5906    author      = {Benjamin Pierce and Scott Dietzen and Spiro Michaylov},
5907    title       = {Programming in Higher-Order Typed Lambda Calculi},
5908    institution = {School of Computer Science, Carnegie Mellon University},
5909    year        = 1989,
5910    address     = {Pittsburg, PA 15213-3890},
5911    month       = mar, number = {CMU-CS-89-111},
5912    abstract    = {
5913        This tutorial presents a hierarchy of increasingly powerful
5914        languages, beginning with Church's simply typed
5915        \(\lambda\)-calculus (\(F_1\)) and the second-order polymorphic
5916        \(\lambda\)-calculus of Girard and Reynolds, and culminating in a
5917        fragment of Girard's \(\omega\)-order polymorphic
5918        \(\lambda\)-calculus (\(F_\omega\)).  Our focus throughout is on
5919        the unusual style of programming that arises in these languages,
5920        where all functions are total and the primary control construct is
5921        iteration rather than general recursion.
5922    }
5923}
5924
5925@book{Modula-2,
5926    keywords    = {modules, coroutines},
5927    contributer = {pabuhr},
5928    author      = {Niklaus Wirth},
5929    title       = {Programming in Modula-2},
5930    publisher   = {Springer},
5931    address     = {New York},
5932    year        = 1988,
5933    edition     = {4th},
5934    series      = {Texts and Monographs in Computer Science},
5935}
5936
5937@manual{Ada,
5938    keywords    = {Ada, packages, tasks, exceptions},
5939    contributer = {pabuhr@plg},
5940    title       = {The Programming Language {Ada}: Reference Manual},
5941    author      = {Ada},
5942    organization= {United States Department of Defense},
5943    edition     = {{ANSI/MIL-STD-1815A-1983}},
5944    month       = feb,
5945    year        = 1983,
5946    note        = {Springer, New York},
5947}
5948
5949@manual{ada:old,
5950    keywords    = {Ada, packages, tasks, exceptions}