source: doc/bibliography/pl.bib @ 1ecee81

ADTarm-ehast-experimentalcleanup-dtorsenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprpthread-emulationqualifiedEnum
Last change on this file since 1ecee81 was 8b590a4, checked in by Peter A. Buhr <pabuhr@…>, 6 years ago

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

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