source: doc/bibliography/pl.bib @ 45af7e1

ADTaaron-thesisarm-ehcleanup-dtorsenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprpersistent-indexerpthread-emulationqualifiedEnum
Last change on this file since 45af7e1 was 45af7e1, checked in by Peter A. Buhr <pabuhr@…>, 4 years ago

start rewrite of concurrency paper for SPE

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