source: doc/bibliography/pl.bib @ 95c0ebe

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

Complete background work on resolution algorithms

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