source: doc/bibliography/pl.bib @ 320e72a2

ADTaaron-thesisarm-ehast-experimentalcleanup-dtorsenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprpthread-emulationqualifiedEnum
Last change on this file since 320e72a2 was a2545593, checked in by Aaron Moss <a3moss@…>, 6 years ago

Add ascription casts to future work

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