source: doc/bibliography/pl.bib @ 8b590a4

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

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

  • Property mode set to 100644
File size: 252.4 KB
Line 
1% Conventions: uncross-referenced entries appear first, then
2%    cross-referenced entries.  In both groups, entries are sorted by their
3%    title field.  Lines like "% A" exist to speed searches.  The main
4%    paper on a language uses the language name as the citation key.  Other
5%    papers use ``<language name>:'' as a prefix.  Please consider leaving
6%    keyword lists and an abstract or comment for future generations, and
7%    put some identification in a contributer field.
8
9%    Predefined journal names:
10%  acmcs: Computing Surveys             acta: Acta Infomatica
11@string{acta="Acta Infomatica"}
12%  cacm: Communications of the ACM
13%  ibmjrd: IBM J. Research & Development ibmsj: IBM Systems Journal
14%  ieeese: IEEE Trans. on Soft. Eng.    ieeetc: IEEE Trans. on Computers
15%  ieeetcad: IEEE Trans. on Computer-Aided Design of Integrated Circuits
16%  ipl: Information Processing Letters  jacm: Journal of the ACM
17%  jcss: J. Computer & System Sciences  scp: Science of Comp. Programming
18%  sicomp: SIAM J. on Computing         tocs: ACM Trans. on Comp. Systems
19%  tods: ACM Trans. on Database Sys.    tog: ACM Trans. on Graphics
20%  toms: ACM Trans. on Math. Software   toois: ACM Trans. on Office Info. Sys.
21%  toplas: ACM Trans. on Prog. Lang. & Sys.
22%  tcs: Theoretical Computer Science
23
24string{ieeepds="IEEE Transactions on Parallel and Distributed Systems"}
25@string{ieeepds="IEEE Trans. Parallel Distrib. Syst."}
26string{ieeese="IEEE Transactions on Software Engineering"}
27@string{ieeese="IEEE Trans. Softw. Eng."}
28string{spe="Software---\-Practice and Experience"}
29@string{spe="Softw. Pract. Exper."}
30string{ccpe="Concurrency and Computation: Practice and Experience"}
31@string{ccpe="Concurrency Comput.: Pract. Exper."}
32string{sigplan="SIGPLAN Notices"}
33@string{sigplan="SIGPLAN Not."}
34string{joop="Journal of Object-Oriented Programming"}
35@string{joop="J. of Object-Oriented Program."}
36@string{popl="Conference Record of the ACM Symposium on Principles of Programming Languages"}
37@string{osr="Operating Systems Review"}
38@string{pldi="Programming Language Design and Implementation"}
39@string{toplas="Transactions on Programming Languages and Systems"}
40string{mathann="Mathematische Annalen"}
41@string{mathann="Math. Ann."}
42
43% A
44
45@incollection{ABC++,
46    keywords    = {concurrency, parallel, distributed, C++},
47    contributer = {pabuhr@plg},
48    author      = {William G. O'Farrell and Frank Ch. Eigler and S. David Pullara and Gregory V. Wilson },
49    title       = {{ABC}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
50    editor      = {Gregory V. Wilson and Paul Lu},
51    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
52    publisher   = {MIT Press},
53    address     = {New York},
54    series      = {Scientific and Engineering Computation Series},
55    year        = 1996,
56    pages       = {1-42},
57}
58
59@techreport{CL90abstract,
60    keywords    = {},
61    contributer = {gjditchfield@plg},
62    author      = {Luca Cardelli and Xavier Leroy},
63    title       = {Abstract Types and the Dot Notation},
64    institution = {Systems Research Center},
65    year        = 1990,
66    address     = {130 Lytton Avenue, Palo Alto, CA  94301},
67    number      = 56,
68    summary     = {
69        The existential types of Mitchell and Plotkin \cite{atet} model
70        abstract types, but their ``open'' notation is unlike the usual dot
71        notation used in programming languages.  This paper gives
72        translations between the ``open'' and ``dot'' forms, and suggests
73        extensions for nested and for parameterized abstractions.
74    }
75}
76
77@article{atet,
78    keywords    = {lambda calculus, polymorphism},
79    contributer = {gjditchfield@plg},
80    author      = {John C. Mitchell and Gordon D. Plotkin},
81    title       = {Abstract Types have Existential Type},
82    journal     = toplas,
83    year        = 1988,
84    month       = jul, volume = 10, number = 3, pages = {470-502},
85    abstract    = {
86        Abstract data type declarations appear in typed programming
87        languages like Ada, Alphard, CLU and ML.  This form of declaration
88        binds a list of identifiers to a type with associated operations, a
89        composite ``value'' we call a {\em data algebra}.  We use a
90        second-order typed lambda calculus SOL to show how data algebras
91        may be given types, passed as parameters, and returned as results of
92        function calls.  In the process, we discuss the semantics of
93        abstract data type declarations and review a connection between
94        typed programming languages and constructive logic.
95    }
96}
97
98@article{alphard:intro,
99    keywords    = {encapsulation, data abstraction},
100    contributer = {gjditchfield@plg},
101    author      = {Wm. A. Wulf and Ralph L. London and Mary Shaw},
102    title       = {Abstraction and Verification in Alphard: Introduction to Language and Methodology},
103    journal     = ieeese,
104    year        = 1976,
105    month       = dec, volume = {SE-2}, number = 4, pages = {253-265},
106    note        = {Reprinted in \cite{alphard}.},
107    abstract    = {
108        Alphard is a programming language whose goals include supporting
109        both the development of well-structured programs and the formal
110        verification of these programs.  This paper attempts to capture the
111        symbiotic influence of these two goals on the design of the
112        language.  To that end the language description is interleaved with
113        the presentation of a proof technique and discudssion of
114        programming methodology.  Examples to illustrate both the language
115        and the verification technique are included.
116    }
117}
118
119@book{Hilfinger83,
120    keywords    = {ada},
121    author      = {Paul N. Hilfinger},
122    title       = {Abstraction Mechanisms and Language Design},
123    publisher   = {MIT Press},
124    series      = {ACM Distinguished Dissertations},
125    year        = 1983,
126}
127
128@incollection{Lavender96,
129    author      = {R. Greg Lavender and Douglas C. Schmidt},
130    chapter     = {Active Object: An Object Behavioral Pattern for Concurrent Programming},
131    title       = {Pattern Languages of Program Design 2},
132    editor      = {John M. Vlissides and James O. Coplien and Norman L. Kerth},
133    year        = 1996,
134    pages       = {483-499},
135    publisher   = {Addison-Wesley Longman Publishing},
136    address     = {Boston},
137}
138
139@article{Nierstrasz87,
140    keywords    = {Hybrid, active objects, object-oriented languages, object-based languages, delegation, concurrency},
141    contributer = {pabuhr@plg},
142    author      = {O. M. Nierstrasz},
143    title       = {Active Objects in {Hybrid}},
144    journal     = sigplan,
145    volume      = 22,
146    number      = 12,
147    month       = dec,
148    year        = 1987,
149    pages       = {243-253},
150    note        = {Proceedings of the OOPSLA'87 Conference, Oct. 4--8, 1987, Orlando, Florida},
151    abstract    = {
152        Most object-oriented languages are strong on reusability or on
153        strong-typing, but weak on concurrency.  In response to this gap,
154        we are developing {\it Hybrid}, an object-oriented language in which
155        objects are the active entities.  Objects in Hybrid are organized
156        into {\it domains}, and concurrent executions into {\it activities}.
157        All object communications are based on remote procedure calls.
158        Unstructured {\it sends\/} and {\it accepts\/} are forbidden.  To
159        this the mechanisms of {\it delegation\/} and {\it delay queues\/}
160        are added to enable switching and triggering of activities.
161        Concurrent subactivities and atomic actions are provided for
162        compactness and simplicity.  We show how solutions to many important
163        concurrent problems [sic], such as pipelining, constraint management
164        and ``administration'' can be compactly expressed using these
165        mechanisms.
166   },
167   comment      = {Mentions Thoth in reference to delegation}
168}
169
170@book{Actors,
171    keywords    = {actors, concurrency},
172    contributer = {pabuhr@plg},
173    author      = {Gul A. Agha},
174    title       = {Actors: A Model of Concurrent Computation in Distributed Systems},
175    publisher   = {MIT Press, Cambridge},
176    year        = 1986
177}
178
179@article{polymorphImpl,
180    keywords    = {Napier88},
181    contributer = {gjditchfield@plg},
182    author      = {R. Morrison and A. Dearle and R. C. H. Connor and A. L. Brown},
183    title       = {An Ad Hoc Approach to the Implementation of Polymorphism},
184    journal     = toplas,
185    year        = 1991,
186    month       = jul,
187    volume      = 13,
188    number      = 3,
189    pages       = {342-371},
190    abstract    = {
191        Polymorphic abstraction provides the ability to write programs that
192        are independent of the form of the data over which they operate.
193        There are a number of different categories of polymorphic
194        expression---ad hoc and universal, which includes parametric and
195        inclusion---all of which have many advantages in terms of code
196        reuse and software economics.  It has proved difficult to provide
197        efficient implementations of polymorphism.  Here, we address this
198        problem and describe a new technique that can implement all forms
199        of polymorphism, use a conventional machine architecture, and
200        support nonuniform data representations.  Furthermore, the method
201        ensures that any extra cost of implementation applies to
202        polymorphic forms only, and allows such polymorphic forms to
203        persist over program invocations.
204    },
205    summary     = {
206        They give three ways to implement polymorphism: {\em textual
207        polymorphism}, which seems to be template instantiation, {\em
208        uniform polymorphism}, which they explain badly, and {\em tagged
209        polymorphism}, where object code performs type tests.
210
211        They use first-class procedures to implement polymorphism: routines
212        with type parameters are implemented as curried routines that
213        return a nested routine that refers to the type parameter.
214    }
215}
216
217@article{dim:ada,
218    keywords    = {Dimensional Analysis, Ada},
219    contributer = {gjditchfield@plg},
220    author      = {Paul N. Hilfinger},
221    title       = {An {Ada} Package for Dimensional Analysis},
222    journal     = toplas,
223    month       = apr,
224    year        = 1988,
225    volume      = 10,
226    number      = 2,
227    pages       = {189-203},
228}
229
230@mastersthesis{Younger91,
231    keywords    = {concurrency, C++, postponing requests},
232    contributer = {pabuhr@plg},
233    author      = {Brian M. Younger},
234    title       = {Adding Concurrency to {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
235    school      = {University of Waterloo},
236    year        = 1991,
237    address     = {Waterloo, Ontario, Canada, N2L 3G1},
238}
239
240@inproceedings{Buhr92c,
241    keywords    = {concurrency},
242    contributer = {pabuhr@plg},
243    author      = {Peter A. Buhr and Glen Ditchfield},
244    title       = {Adding Concurrency to a Programming Language},
245    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Technical Conference Proceedings},
246    organization= {USENIX Association},
247    address     = {Portland, Oregon, U.S.A.},
248    month       = aug,
249    year        = 1992,
250    pages       = {207-224},
251}
252
253@article{Buhr89b,
254    keywords    = {concurrency, C++},
255    contributer = {pabuhr@plg},
256    author      = {P. A. Buhr and Glen Ditchfield and C. R. Zarnke},
257    title       = {Adding Concurrency to a Statically Type-Safe Object-Oriented Programming Language},
258    journal     = sigplan,
259    volume      = 24,
260    number      = 4,
261    month       = apr,
262    year        = 1989,
263    pages       = {18-21},
264    note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming, Sept. 26--27, 1988, San Diego, California, U.S.A.},
265}
266
267@article{Knuth66,
268    keywords    = {N-thread software-solution mutual exclusion},
269    contributer = {pabuhr@plg},
270    author      = {Donald E. Knuth},
271    title       = {Additional Comments on a Problem in Concurrent Programming Control},
272    journal     = cacm,
273    month       = may,
274    year        = 1966,
275    volume      = 9,
276    number      = 5,
277    pages       = {321-322},
278    note        = {Letter to the Editor}
279}
280
281@article{DeBruijn67,
282    keywords    = {N-thread software-solution mutual exclusion},
283    contributer = {pabuhr@plg},
284    author      = {Nicolaas Govert de Bruijn},
285    title       = {Additional Comments on a Problem in Concurrent Programming Control},
286    journal     = cacm,
287    month       = mar,
288    year        = 1967,
289    volume      = 10,
290    number      = 3,
291    pages       = {137-138},
292    note        = {letter to the Editor}
293}
294
295@phdthesis{Krischer10,
296    author      = {Roy Krischer},
297    title       = {Advanced Concepts in Asynchronous Exception Handling},
298    school      = {University of Waterloo},
299    year        = 2010,
300    month       = dec,
301    address     = {Waterloo, Ontario, Canada, N2L 3G1},
302    optnote     = {\textsf{http://uwspace.uwaterloo.ca/\-bitstream/10012/\-5751\-/1/Krischer\_Roy.pdf}},
303    note        = {\href{http://uwspace.uwaterloo.ca/bitstream/10012/5751/1/Krischer_Roy.pdf}{http://uwspace.uwaterloo.ca/\-bitstream/10012/\-5751\-/1/Krischer\_Roy.pdf}},
304}
305
306@article{Buhr00a,
307    keywords    = {exception handling},
308    contributer = {pabuhr@plg},
309    author      = {Peter A. Buhr and W. Y. Russell Mok},
310    title       = {Advanced Exception Handling Mechanisms},
311    journal     = ieeese,
312    volume      = 26,
313    number      = 9,
314    month       = sep,
315    year        = 2000,
316    pages       = {820-836},
317}
318
319@book{Richter97,
320    keywords    = {Win32, threads},
321    author      = {Jeffrey M. Richter},
322    title       = {Advanced Windows},
323    publisher   = {Microsoft Press},
324    year        = 1997,
325    edition     = {3rd},
326}
327
328@article{Francez77,
329    keywords    = {parameter passing, named/positional arguments},
330    contributer = {pabuhr@plg},
331    author      = {Nissim Francez},
332    title       = {Another Advantage of Keyword Notation for Parameter Communication with Subprograms},
333    journal     = cacm,
334    volume      = 20,
335    number      = 8,
336    month       = aug,
337    year        = 1977,
338    pages       = {604-605},
339}
340
341@manual{Akka,
342    keywords    = {Akka actor model},
343    contributer = {pabuhr@plg},
344    title       = {{A}kka {S}cala Documentation, Release 2.4.11},
345    organization= {Lightbend Inc.},
346    month       = sep,
347    year        = 2016,
348    note        = {\href{http://doc.akka.io/docs/akka/2.4/AkkaScala.pdf}{http://\-doc.akka.io/\-docs/\-akka/\-2.4/\-AkkaScala.pdf}},
349}
350
351@article{Algol60,
352    keywords    = {Algol60},
353    contributer = {pabuhr@plg},
354    author      = {J. W. Backus and F. L. Bauer and J. Green and C. Katz and
355                   J. McCarthy and P. Naur and A. J. Perlis and H. Rutishauser and K. Samuelson
356                   and B. Vauquois and J.H. Wegstein and A. van Wijngaarden and M. Woodger},
357    title       = {Revised Report on the Algorithmic Language Algol 60},
358    editor      = {Peter Nauer},
359    journal     = cacm,
360    volume      = 6,
361    number      = 1,
362    month       = jan,
363    year        = 1963,
364    pages       = {1-17},
365}
366
367@article{Mellor-Crummey91,
368    keywords    = {spin locks, compare-and-swap, barriers},
369    contributer = {pabuhr@plg},
370    author      = {John M. Mellor-Crummey and Michael L. Scott},
371    title       = {Algorithm for Scalable Synchronization on Shared-Memory Multiprocessors},
372    journal     = tocs,
373    volume      = 9,
374    number      = 1,
375    month       = feb,
376    year        = 1991,
377    pages       = {21-65},
378}
379
380@article{Hoare61,
381    keywords    = {quick sort},
382    contributer = {pabuhr@plg},
383    author      = {C. A. R. Hoare},
384    title       = {Algorithms 63/64: Partition/Quicksort},
385    journal     = cacm,
386    volume      = 4,
387    number      = 7,
388    month       = jul,
389    year        = 1961,
390    pages       = {321},
391}
392
393@article{Cormack81,
394    keywords    = {},
395    contributer = {gjditchfield@plg},
396    author      = {Gordon V. Cormack},
397    title       = {An Algorithm for the Selection of Overloaded Functions in {Ada}},
398    journal     = sigplan,
399    year        = 1981,
400    month       = feb, volume = 16, number = 2, pages = {48-52},
401    comment     = {
402        A one-pass, top-down algorithm for overload resolution.  Input is a
403        parse tree and the desired result type, and output is the number of
404        solutions.  For each overloading of the root identifier with a
405        matching parameter list, recursively solve for each parameter for
406        the corresponding argument type---there should be one solution.
407    }
408}
409
410@book{Raynal86,
411    keywords    = {mutual exclusion, locks},
412    contributer = {pabuhr@plg},
413    author      = {M. Raynal},
414    title       = {Algorithms for Mutual Exclusion},
415    publisher   = {MIT Press},
416    address     = {Cambridge},
417    series      = {Scientific Computation Series},
418    year        = 1986,
419    note        = {Translated by D. Beeson},
420}
421
422@incollection{Gidenstam05,
423    keywords    = {lock free, dynamic memory allocation},
424    contributer = {pabuhr@plg},
425    author      = {Anders Gidenstam and Marina Papatriantafilou and Philippas Tsigas},
426    title       = {Allocating Memory in a Lock-free Manner},
427    editor      = {Gerth St{\o}lting Brodal and Stefano Leonardi},
428    booktitle   = {Algorithms -- ESA 2005},
429    pages       = {329-342},
430    publisher   = {Springer},
431    address     = {New York},
432    year        = 2005,
433    volume      = 3669,
434    series      = {Lecture Notes in Computer Science},
435}
436
437@book{Sites92,
438    keywords    = {computers, Alpha},
439    contributer = {pabuhr@plg},
440    editor      = {Richard L. Sites},
441    title       = {Alpha Architecture Reference Manual},
442    publisher   = {Digital Press, Burlington},
443    year        = 1992,
444}
445
446@book{alphard,
447    keywords    = {Parametric polymorphism, alphard, iterators, nested types},
448    contributer = {gjditchfield@plg},
449    key         = {Alphard},
450    editor      = {Mary Shaw},
451    title       = {{ALPHARD}: Form and Content},
452    publisher   = {Springer},
453    address     = {New York},
454    year        = 1981,
455    comment     = {Collection of papers about Alphard.}
456}
457
458@article{Kessels77,
459    keywords    = {monitors},
460    contributer = {pabuhr@plg},
461    author      = {Joep L. W. Kessels},
462    title       = {An Alternative to Event Queues for Synchronization in Monitors},
463    journal     = cacm,
464    volume      = 20,
465    number      = 7,
466    month       = jul,
467    year        = 1977,
468    pages       = {500-503},
469    annote      = {
470    }
471}
472
473@article{descr,
474    keywords    = {X2, subclasses, inheritance, parameterized classes},
475    contributer = {gjditchfield@plg},
476    author      = {David Sandberg},
477    title       = {An Alternative to Subclassing},
478    journal     = sigplan,
479    volume      = {21},    number = {11},
480    pages       = {424-428},
481    month       = nov, year = 1986,
482    comment     = {
483        The Smalltalk class hierarchy has three uses: factoring out code;
484        ``Abstraction superclasses'' such as Collection; rapid construction
485        of new classes by incremental change.
486
487        ``A descriptive class specifies a partial behavior by specifying a
488        set of procedure headings that describe what can be done with
489        instances of classes that belong to the descriptive class.''  An
490        ``instance'' statement declares a class to be an instance of a
491        descriptive class and defines the correspondence between
492        operations.  Procedures with descriptive class parameters take any
493        instance as arguments.  Descriptive classes can describe relations
494        like ``c is a collection with element type e'', but how such things
495        are used isn't explained.
496       
497        For each descriptive class used in a parameter list, an implicit
498        parameter is created that is passed a vector of procedures.
499    }
500}
501
502@incollection{Matsuoka93,
503    keywords    = {inheritance anomaly},
504    contributer = {pabuhr@plg},
505    author      = {Satoshi Matsuoka and Akinori Yonezawa},
506    title       = {Analysis of Inheritance Anomaly in Object-Oriented Concurrent Programming Languages},
507    booktitle   = {Research Directions in Concurrent Object-Oriented Programming},
508    editor      = {Gul Agha and Peter Wegner and Akinori Yonezawa},
509    publisher   = {MIT Press},
510    address     = {New York},
511    year        = 1993,
512    pages       = {107-150},
513}
514
515@article{Sinha00,
516    author      = {Saurabh Sinha and Mary Jean Harrold},
517    title       = {Analysis and Testing of Programs with Exception-Handling Constructs},
518    journal     = ieeese,
519    year        = 2000,
520    month       = sep,
521    volume      = 26,
522    number      = 9,
523    pages       = {849--871},
524}
525
526@inproceedings{Robillard99,
527    author      = {Martin P. Robillard and Gail C. Murphy},
528    title       = {Analyzing Exception Flow in {J}ava Programs},
529    booktitle   = {ESEC/FSE-7: Proceedings of the 7th European Software Engineering Conference held jointly
530                   with the 7th ACM SIGSOFT International Symposium on Foundations of Software Engineering},
531    year        = 1999,
532    pages       = {322--337},
533    isbn        = {3-540-66538-2},
534    location    = {Toulouse, France},
535    doi         = {http://doi.acm.org/10.1145/318773.319251},
536    publisher   = {Springer},
537    address     = {London, UK},
538}
539
540@book{C++,
541    keywords    = {C++, ANSI},
542    author      = {Margaret A. Ellis and Bjarne Stroustrup},
543    title       = {The Annotated {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Reference Manual},
544    publisher   = {Addison-Wesley},
545    address     = {Boston},
546    year        = 1990,
547    edition     = {1st},
548}
549
550@book{APL,
551    keywords    = {APL},
552    contributer = {pabuhr@plg},
553    author      = {K. E. Iverson},
554    title       = {A Programming Language},
555    publisher   = {Wiley, New York},
556    year        = 1962
557}
558
559@article{PS-Algol:old,
560    author      = {M. Atkinson and P. Bailey and K. Chisholm and P. Cockshott and R. Morrison},
561    title       = {An Approach to Persistent Programming},
562    journal     = {The Computer Journal},
563    year        = 1983,
564    volume      = 26,
565    number      = 4,
566    pages       = {360-365},
567}
568
569@inproceedings {Qin18,
570    author      = {Henry Qin and Qian Li and Jacqueline Speiser and Peter Kraft and John Ousterhout},
571    title       = {Arachne: Core-Aware Thread Management},
572    booktitle   = {13th {USENIX} Symp. on Oper. Sys. Design and Impl. ({OSDI} 18)},
573    year        = {2018},
574    address     = {Carlsbad, CA},
575    pages       = {145-160},
576    publisher   = {{USENIX} Association},
577    note        = {\href{https://www.usenix.org/conference/osdi18/presentation/qin}{https://\-www.usenix.org/\-conference/\-osdi18/\-presentation/\-qin}},
578}
579
580@article{Kessels82,
581    keywords    = {concurrency, critical section},
582    contributer = {pabuhr@plg},
583    author      = {Joep L. W. Kessels},
584    title       = {Arbitration Without Common Modifiable Variables},
585    journal     = acta,
586    volume      = 17,
587    number      = 2,
588    month       = jun,
589    year        = 1982,
590    pages       = {135-141},
591}
592
593@article{Buhr95a,
594    keywords    = {concurrency, library approach},
595    contributer = {pabuhr@plg},
596    author      = {Peter A. Buhr},
597    title       = {Are Safe Concurrency Libraries Possible?},
598    journal     = cacm,
599    month       = feb,
600    year        = 1995,
601    volume      = 38,
602    number      = 2,
603    pages       = {117-120},
604}
605
606@book{ARMv7,
607    key         = {ARM processor},
608    title       = {ARM Architecture Reference Manual},
609    publisher   = {ARM},
610    volume      = {ARM DDI 0406C.b (ID072512)},
611    year        = 2012,
612}
613
614@book{Herlihy08,
615    contributer = {pabuhr@plg},
616    author      = {Herlihy, Maurice and Shavit, Nir},
617    title       = {The Art of Multiprocessor Programming},
618    year        = 2008,
619    isbn        = {0123705916, 9780123705914},
620    publisher   = {Morgan Kaufmann Publishers},
621    address     = {San Francisco},
622}
623
624@inproceedings{Chung10,
625    keywords    = {transactional memory, lock-free programming, x86 architecture},
626    contributer = {pabuhr@plg},
627    author      = {Jaewoong Chung and Luke Yen and Stephan Diestelhorst and Martin Pohlack and Michael Hohmuth and David Christie and Dan Grossman},
628    title       = {ASF: AMD64 Extension for Lock-Free Data Structures and Transactional Memory},
629    booktitle   = {Proceedings of the 2010 43rd Annual IEEE/ACM International Symposium on Microarchitecture},
630    series      = {MICRO '43},
631    year        = 2010,
632    pages       = {39--50},
633    numpages    = {12},
634    publisher   = {IEEE Computer Society},
635    address     = {Washington, DC, USA},
636}
637
638@article{Buhr94a,
639    keywords    = {assignment, parameter passing, multiple assignment},
640    contributer = {pabuhr@plg},
641    author      = {P. A. Buhr and David Till and C. R. Zarnke},
642    title       = {Assignment as the Sole Means of Updating Objects},
643    journal     = spe,
644    month       = sep,
645    year        = 1994,
646    volume      = 24,
647    number      = 9,
648    pages       = {835-870},
649}
650
651@inproceedings{Krischer08,
652    keywords    = {exception handling, asynchronous, blocked tasks},
653    contributer = {pabuhr@plg},
654    author      = {Roy Krischer and Peter A. Buhr},
655    title       = {Asynchronous Exception Propagation in Blocked Tasks},
656    booktitle   = {4th International Workshop on Exception Handling (WEH.08)},
657    organization= {16th International Symposium on the Foundations of Software Engineering (FSE 16)},
658    address     = {Atlanta, U.S.A},
659    month       = nov,
660    year        = 2008,
661    pages       = {8-15},
662}
663
664@article{Joung00,
665    author      = {Joung, Yuh-Jzer},
666    title       = {Asynchronous group mutual exclusion},
667    journal     = {Dist. Comput.},
668    optjournal  = {Distributed Computing},
669    year        = {2000},
670    month       = {Nov},
671    volume      = {13},
672    number      = {4},
673    pages       = {189--206},
674}
675
676@article{oop:modpascal,
677    keywords    = {ModPascal},
678    contributer = {gjditchfield@plg},
679    author      = {Walter G. Olthoff},
680    title       = {Augmentation of Object-Oriented Programming by Concepts of Abstract Data Type Theory: The ModPascal Experience},
681    journal     = sigplan,
682    volume      = 21,
683    number      = 11,
684    pages       = {429-443},
685    month       = nov,
686    year        = 1986
687}
688
689@inproceedings{Shen91,
690    keywords    = {Ada, polymorphism},
691    contributer = {pabuhr@plg},
692    author      = {Jun Shen and Gordon V. Cormack},
693    title       = {Automatic instantiation in Ada},
694    booktitle   = {Proceedings of the ACM Tri-Ada Conference},
695    organization= {ACM},
696    address     = {San Jose, California, U.S.A},
697    month       = oct,
698    year        = 1991,
699    pages       = {338-346},
700}
701
702@article{Havender68,
703    keywords    = {deadlock},
704    contributer = {pabuhr@plg},
705    author      = {J. W. Havender},
706    title       = {Avoiding Deadlock in Multitasking Systems},
707    journal     = ibmsj,
708    volume      = 7,
709    number      = 2,
710    year        = 1968,
711    pages       = {74-84},
712}
713
714% B
715
716@article{Michael13,
717    contributer = {pabuhr@plg},
718    author      = {Maged M. Michael},
719    title       = {The Balancing Act of Choosing Nonblocking Features},
720    journal     = cacm,
721    volume      = 56,
722    number      = 9,
723    month       = sep,
724    year        = 2013,
725    pages       = {46--53},
726    publisher   = {ACM},
727    address     = {New York, NY, USA},
728}
729
730@incollection{beta:old,
731    keywords    = {beta, patterns, virtual types},
732    contributer = {gjditchfield@plg},
733    author      = {Bent Bruun Kristensen and Ole Lehrmann Madsen and Birger M{\o}ller-Pedersen and Kristen Nygaard},
734    title       = {The BETA Programming Language},
735    booktitle   = {Research Directions in Object-Oriented Programming},
736    publisher   = {MIT Press},
737    series      = {Computer Systems Series},
738    year        = 1987,
739    pages       = {7-48},
740    editor      = {Bruce Shriver and Peter Wegner}
741}
742
743@article{Knudsen87,
744    keyword     = {static exception handling mechanism, BETA, sequel},
745    contributor = {wyrmok@plg},
746    author      = {J{\o}rgen Lindskov Knudsen},
747    title       = {Better Exception Handling in Block Structured Systems},
748    journal     = {IEEE Software},
749    year        = 1987,
750    month       = may,
751    volume      = 4,
752    number      = 3,
753    pages       = {40-49},
754    comments    = {
755        Going up the call hierarchy to look for a handler does not fit an
756        otherwise statically scoped language. Also, not knowing which handler
757        to be used when raising an abnormal event is seen as a weakness of the
758        (dynamic) exception handling mechanism. Knudsen believed that raising
759        an exception should specify the handler for the exception -- the
760        handler is chosen when the exception is raised.  However, I don't think
761        his scheme can solve the problem, especially with all the callback
762        routines commonly found in OO programming.
763
764        BETA exception handling mechanism uses his work as a foundation.
765        However, I don't see any benefits BETA has over other language that is
766        a direct consequence of Knudsen's work. On the other hand, my knowledge
767        on BETA is very limited.
768        }
769}
770
771@book{BCPL,
772    keywords    = {BCPL},
773    contributer = {pabuhr@plg},
774    author      = {M. Richards and C. Whitby-Strevens},
775    title       = {{BCPL} -- The Language and Its Compiler},
776    publisher   = {Cambridge University Press, Cambridge},
777    year        = 1979,
778}
779
780@incollection{Madsen87,
781    keywords    = {nested classes},
782    contributer = {pabuhr@watmsg},
783    author      = {Ole Lehrmann Madsen},
784    title       = {Block Structure and Object Oriented Languages},
785    booktitle   = {Research Directions in Object-Oriented Programming},
786    editor      = {Bruce Shriver and Peter Wegner},
787    publisher   = {MIT Press},
788    series      = {Computer Systems Series},
789    year        = 1987,
790    pages       = {113-128}
791}
792
793@inproceedings{booleanClasses,
794    keywords    = {specifications},
795    contributer = {gjditchfield@plg},
796    author      = {David McAllester and Ramin Zabih},
797    title       = {Boolean Classes},
798    crossref    = "OOPSLA86",
799    pages       = {417-423},
800    abstract    = {
801        We extend the notion of class so that any Boolean combination of
802        classes is also a class.  Boolean classes allow greater precision
803        and conciseness in naming the class of objects governed a
804        particular method [sic].  A class can be viewed as a predicate
805        which is either true or false of any given object.  Unlike
806        predicates however classes have an inheritance hierarchy which is
807        known at compile time.  Boolean classes extend the notion of class,
808        making classes more like predicates, while preserving the compile
809        time computable inheritance hierarchy.
810    },
811    comment     = {
812        Classes are predicates; if object {\tt o} is in class {\tt C}, then
813        {\tt C} is true of {\tt o}.  Classes are combined with {\tt :AND},
814        {\tt :OR}, and {\tt :NOT}.  Inheritance is treated as implication:
815        {\tt (:implies C E)} means that if class {\tt C} is true of {\tt
816        o}, class expression {\tt E} is true of {\tt o}, so if {\tt E} is a
817        class, it is a superclass of {\tt C}.  Some class expressions, i.e.
818        {\tt (:OR c1 c2)}, can't be instantiated.  Others, i.e. {\tt (:NOT
819        c)}, can't be given methods or members because almost all classes
820        would inherit them, violating modularity.  The rules for spotting
821        these problems are complex.  Determining if one class inherits from
822        another needs an exponential algorithm.
823    }
824}
825
826@misc{BoostCoroutines15,
827    keywords    = {Boost Coroutine Library},
828    contributer = {pabuhr@plg},
829    author      = {Oliver Kowalke},
830    title       = {Boost Coroutine Library},
831    year        = 2015,
832    howpublished= {\href{http://www.boost.org/doc/libs/1_61_0/libs/coroutine/doc/html/index.html}
833                  {http://www.boost.org/\-doc/\-libs/1\_61\_0/\-libs/\-coroutine/\-doc/\-html/\-index.html}},
834}
835
836@misc{BoostThreads,
837    keywords    = {Boost Thread Library},
838    contributer = {pabuhr@plg},
839    author      = {Anthony Williams and Vicente J. Botet Escriba},
840    title       = {Boost Thread Library},
841    year        = 2015,
842    howpublished= {\href{https://www.boost.org/doc/libs/1_61_0/doc/html/thread.html}
843                  {https://\-www.boost.org/\-doc/\-libs/\-1\_61\_0/\-doc/\-html/\-thread.html}},
844}
845
846@mastersthesis{Krischer02,
847    author      = {Roy Krischer },
848    title       = {Bound Exceptions in Object-Oriented Programming Languages},
849    school      = {Universit\"at Mannheim},
850    address     = {Mannheim, Deutschland},
851    year        = 2002,
852    month       = oct,
853    type        = {Diplomarbeit},
854    note        = {\href{https://plg.uwaterloo.ca/~usystem/theses/KrischerThesis.pdf}{https://\-plg.uwaterloo.ca/\-$\sim$usystem/\-theses/\-KrischerThesis.pdf}},
855}
856
857@inproceedings{Buhr03,
858    keywords    = {exception handling, bound handler},
859    contributer = {pabuhr@plg},
860    author      = {Peter A. Buhr and Roy Krischer},
861    title       = {Bound Exceptions in Object Programming},
862    booktitle   = {Proceedings of the ECOOP 2003 Workshop on Exception Handling in Object Oriented Systems:
863                  Towards Emerging Application Areas and New Programming Paradigms},
864    organization= {ECOOP},
865    address     = {Darmstadt, Germany},
866    month       = jul,
867    year        = 2003,
868    pages       = {20-26},
869}
870%    note       = {http://www.cs.umn.edu/research/technical_reports.php/listing/technical_reports.php?page=report&report_id=03-028}
871
872@inproceedings{Buhr06b,
873    keywords    = {exception handling, bound exceptions},
874    author      = {Peter A. Buhr and Roy Krischer},
875    title       = {Bound Exceptions in Object-Oriented Programming},
876    editor      = {C. Dony and J. L. Knudsen and A. Romanovsky and A. Tripathi},
877    booktitle   = {Advanced Topics in Exception Handling Techniques},
878    publisher   = {Springer},
879    series      = {Lecture Notes in Computer Science},
880    volume      = 4119,
881    year        = 2006,
882    pages       = {1-21}
883}
884
885% C
886
887@book{C,
888    keywords    = {C},
889    contributer = {pabuhr@plg},
890    author      = {Brian W. Kernighan and Dennis M. Ritchie},
891    title       = {The {C} Programming Language},
892    publisher   = {Prentice-Hall},
893    address     = {Englewood Cliffs},
894    year        = 1988,
895    edition     = {2nd},
896    series      = {Prentice-Hall Software Series},
897    comment     = {
898         based on draft-proposed ANSI C
899    }
900}
901
902@book{C:old,
903    keywords    = {C},
904    contributer = {pabuhr@plg},
905    author      = {Brian W. Kernighan and Dennis M. Ritchie},
906    title       = {The {C} Programming Language},
907    publisher   = {Prentice-Hall},
908    address     = {Englewood Cliffs},
909    year        = 1978,
910    edition     = {1st},
911}
912
913@manual{ANSI89:C,
914    keywords    = {ANSI C 89},
915    contributer = {gjditchfield@plg},
916    author      = {C90},
917    title       = {Programming Languages -- {C}},
918    organization= {American National Standards Institute},
919    address     = {New York, NY, U.S.A.},
920    year        = 1990,
921    note        = {ANSI/ISO 9899-1990}
922}
923
924@manual{C11,
925    keywords    = {ISO/IEC C 11},
926    contributer = {pabuhr@plg},
927    key         = {C11},
928    title       = {C Programming Language {ISO/IEC} 9889:2011-12},
929    edition     = {3rd},
930    publisher   = {International Standard Organization},
931    address     = {\href{https://www.iso.org/standard/57853.html}{https://\-www.iso.org/\-standard/\-57853.html}},
932    year        = 2012,
933}
934
935@manual{C++Concepts,
936    keywords    = {ISO/IEC TS 19217:2015},
937    contributer = {a3moss@uwaterloo.ca},
938    key         = {Concepts},
939    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming language -- Extensions for concepts {ISO/IEC} {TS} 19217:2015},
940    publisher   = {International Standard Organization},
941    address     = {\href{https://www.iso.org/standard/64031.html}{https://\-www.iso.org/\-standard/\-64031.html}},
942    year        = 2015,
943}
944
945@misc{Cforall,
946    contributer = {pabuhr@plg},
947    key         = {Cforall},
948    author      = {{\textsf{C}{$\mathbf{\forall}$} Features}},
949    howpublished= {\href{https://plg.uwaterloo.ca/~cforall/features}{https://\-plg.uwaterloo.ca/\-$\sim$cforall/\-features}},
950}
951
952@mastersthesis{Esteves04,
953    keywords    = {Cforall, parametric polymorphism, overloading},
954    contributer = {pabuhr@plg},
955    author      = {Rodolfo Gabriel Esteves},
956    title       = {\textsf{C}$\mathbf{\forall}$, a Study in Evolutionary Design in Programming Languages},
957    school      = {School of Computer Science, University of Waterloo},
958    year        = 2004,
959    address     = {Waterloo, Ontario, Canada, N2L 3G1},
960    note        = {\href{http://plg.uwaterloo.ca/theses/EstevesThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-EstevesThesis.pdf}},
961}
962
963@misc{CFAStackEvaluation,
964    contributer = {a3moss@plg},
965    author      = {Aaron Moss},
966    title       = {\textsf{C}$\mathbf{\forall}$ Stack Evaluation Programs},
967    year        = 2018,
968    howpublished= {\href{https://cforall.uwaterloo.ca/CFAStackEvaluation.zip}{https://cforall.uwaterloo.ca/\-CFAStackEvaluation.zip}},
969}
970
971@article{Moss18,
972    keywords    = {type systems, polymorphism, tuples, Cforall},
973    contributer = {pabuhr@plg},
974    author      = {Aaron Moss and Robert Schluntz and Peter A. Buhr},
975    title       = {\textsf{C}$\mathbf{\forall}$ : Adding Modern Programming Language Features to C},
976    journal     = spe,
977    volume      = 48,
978    number      = 12,
979    month       = dec,
980    year        = 2018,
981    pages       = {2111-2146},
982    note        = {\href{http://dx.doi.org/10.1002/spe.2624}{http://\-dx.doi.org/\-10.1002/\-spe.2624}},
983}
984
985@inproceedings{c++scheme,
986    keywords    = {},
987    contributer = {gjditchfield@plg},
988    author      = {Vincent F. Russo and Simon M. Kaplan},
989    title       = {A {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Interpreter for {S}cheme},
990    booktitle   = {Usenix {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
991    year        = 1988,
992    pages       = {95-108},
993    summary     = {
994        The SIOD interpreter for a Scheme subset, written in C, has a
995        tagged union representing data objects, and read(), eval(), and
996        print() functions that are basically large switch statements that
997        switch based on the tag.  The authors rewrote it to use a class
998        with virtual read(), eval(), and print() members, without changing
999        any algorithms.  The result was more modular, more easily
1000        extensible, more reliable, and slightly faster.
1001    },
1002    comment     = {
1003        The evidence given is thin.
1004    },
1005}
1006
1007@article{doskernel,
1008    keywords    = {light weight processes},
1009    contributer = {gjditchfield@plg},
1010    author      = {Tom Green},
1011    title       = {A {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Multitasking Kernel},
1012    journal     = {Dr. Dobb's Journal of Software Tools},
1013    year        = 1989,
1014    month       = feb,
1015    volume      = 14,
1016    number      = 2,
1017    pages       = {45-51},
1018    comment     = {
1019       A light-weight multitasking kernel for MS-DOS.  A task\_control
1020       object holds task objects, which may block themselves on signal
1021       objects.  Task switching is normally preemptive, but tasks can turn
1022       off preemption before calling non-reentrant routines.  Source code
1023       is given.
1024    }
1025}
1026
1027@inproceedings{Doeppner87,
1028    keywords    = {concurrency},
1029    contributer = {pabuhr@plg},
1030    author      = {Thomas W. Doeppner and Alan J. Gebele},
1031    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} on a Parallel Machine},
1032    booktitle   = {Proceedings and Additional Papers {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Workshop},
1033    organization= {USENIX Association},
1034    address     = {Santa Fe, New Mexico, U.S.A},
1035    month       = nov,
1036    year        = 1987,
1037    pages       = {94-107},
1038}
1039
1040@book{Lippman91,
1041    keywords    = {C++},
1042    contributer = {pabuhr@plg},
1043    author      = {Stanley B. Lippman},
1044    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Primer},
1045    publisher   = {Addison-Wesley},
1046    address     = {Boston},
1047    year        = 1991,
1048    edition     = {2nd},
1049    note        = {QA76.73.C15L57},
1050}
1051
1052@book{c++:v1,
1053    keywords    = {C++},
1054    contributer = {gjditchfield@plg},
1055    author      = {Bjarne Stroustrup},
1056    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
1057    publisher   = {Addison-Wesley},
1058    address     = {Boston},
1059    year        = 1986,
1060    edition     = {1st},
1061    series      = {Addison-Wesley Series in Computer Science}
1062}
1063
1064@book{c++:v2,
1065    keywords    = {C++},
1066    contributer = {pabuhr@plg},
1067    author      = {Bjarne Stroustrup},
1068    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
1069    publisher   = {Addison-Wesley},
1070    address     = {Boston},
1071    year        = 1991,
1072    edition     = {2nd},
1073}
1074
1075@book{c++:v3,
1076    keywords    = {C++},
1077    contributer = {pabuhr@plg},
1078    author      = {Bjarne Stroustrup},
1079    title       = {The {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language},
1080    publisher   = {Addison Wesley Longman},
1081    year        = 1997,
1082    edition     = {3rd},
1083}
1084
1085@manual{Csharp,
1086    keywords    = {C#},
1087    contributer = {pabuhr@plg},
1088    title       = {C\# Language Specification, Standard ECMA-334},
1089    organization= {ECMA International Standardizing Information and Communication Systems},
1090    month       = jun,
1091    year        = 2006,
1092    edition     = {4th},
1093}
1094
1095@article{Buhr85,
1096    keywords    = {goto, multi-exit loop},
1097    contributer = {pabuhr@plg},
1098    author      = {P. A. Buhr},
1099    title       = {A Case for Teaching Multi-exit Loops to Beginning Programmers},
1100    journal     = sigplan,
1101    volume      = 20,
1102    number      = 11,
1103    month       = nov,
1104    year        = 1985,
1105    pages       = {14-22}
1106}
1107
1108@inproceedings{Necula02,
1109    author      = {Necula, George C. and McPeak, Scott and Weimer, Westley},
1110    title       = {{CCured}: Type-safe Retrofitting of Legacy Code},
1111    booktitle   = {Proceedings of the 29th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages},
1112    series      = {POPL '02},
1113    year        = {2002},
1114    location    = {Portland, Oregon},
1115    pages       = {128-139},
1116    publisher   = {ACM},
1117    address     = {New York, NY, USA},
1118}
1119
1120@techreport{cforall-ug,
1121    keywords    = {cforall, user guide},
1122    contributer = {pabuhr@plg},
1123    author      = {Peter A. Buhr and Glen Ditchfield and David Till and Charles R. Zarnke},
1124    title       = {\textsf{C}$\mathbf{\forall}$ Users Guide, Version 0.1},
1125    institution = {Department of Computer Science, University of Waterloo},
1126    address     = {Waterloo, Ontario, Canada, N2L 3G1},
1127    month       = oct,
1128    year        = 2001,
1129    note        = {\href{http://plg.uwaterloo.ca/~cforall/cfa.ps}{http://\-plg.uwaterloo.ca/\-$\sim$cforall/\-cfa.ps}},
1130}
1131
1132@manual{cforall-refrat,
1133    keywords    = {polymorphism},
1134    contributer = {gjditchfield@plg},
1135    author      = {Glen Ditchfield},
1136    title       = {Cforall Reference Manual and Rationale},
1137    edition     = {Revision 1.82},
1138    month       = jan,
1139    year        = 1998,
1140    note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-Cforall/\-refrat.ps.gz}}},
1141}
1142
1143@inproceedings{Tarditi18,
1144    keywords    = {Checked C},
1145    contributer = {a3moss@uwaterloo.ca},
1146    author      = {Tarditi, David and Elliott, Archibald Samuel and Ruef, Andrew and Hicks, Michael},
1147    title       = {Checked C: Making C Safe by Extension},
1148    booktitle   = {2018 IEEE Cybersecurity Development (SecDev)}
1149    year = {2018},
1150    month = {September},
1151    pages = {53-60},
1152    publisher = {IEEE},
1153    url = {https://www.microsoft.com/en-us/research/publication/checkedc-making-c-safe-by-extension/},
1154}
1155
1156@misc{Clang,
1157    keywords = {clang},
1158    contributer = {a3moss@uwaterloo.ca},
1159    title = {Clang: a {C} language family frontend for {LLVM}},
1160    howpublished = {\href{https://clang.llvm.org/}{https://\-clang.llvm.org/}},
1161    note = {Accessed 2019-02-22}
1162}
1163
1164@book{Yourdon79,
1165    keywords    = {software engineering},
1166    contributer = {pabuhr@plg},
1167    editor      = {Edward Nash Yourdon},
1168    title       = {Classics in Software Engineering},
1169    publisher   = {Yourdon Press},
1170    address     = {New York},
1171    year        = 1979,
1172}
1173
1174@inproceedings{Crnogorac98,
1175    keywords    = {inheritance anomaly},
1176    contributer = {pabuhr@plg},
1177    author      = {Lobel Crnogorac and Anand S. Rao and Kotagiri Ramamohanarao},
1178    title       = {Classifying Inheritance Mechanisms in Concurrent Object-Oriented Programming},
1179    editor      = {Eric Jul},
1180    booktitle   = {{ECOOP}~'98---Object-Oriented Programming},
1181    series      = {Lecture Notes in Computer Science},
1182    publisher   = {Springer},
1183    volume      = 1445,
1184    year        = 1998,
1185    pages       = {571-601},
1186    ISBN        = {3-540-64737-6},
1187    ISSN        = {0302-9743},
1188    abstract    = {
1189        Inheritance is one of the key concepts in object-oriented rogramming. However, the
1190        usefulness of inheritance in concurrent object-oriented programming is greatly
1191        reduced by the problem of inheritance anomaly. Inheritance anomaly is manifested
1192        by undesirable re-definitions of inherited code. The problem is aggravated by the
1193        lack of a formal analysis, with a multitude of differing proposals and conflicting
1194        opinions causing the current state of research, and further directions, to be
1195        unclear. In this paper we present a formal analysis of inheritance anomaly in
1196        concurrent object-oriented programming. Starting from a formal definition of the
1197        problem we develop a taxonomy of the anomaly, and use it to classify the various
1198        proposals. As a result, the major ideas, trends and limitations of the various
1199        proposals are clearly exposed. Formal analysis of the anomaly and a thorough
1200        exposition of its causes and implications are the pre-requisites for a successful
1201        integration of inheritance and concurrency.
1202    },
1203}
1204
1205@book{CLU,
1206    keywords    = {CLU},
1207    contributer = {gjditchfield@plg},
1208    author      = {Barbara Liskov and Russell Atkinson and Toby Bloom and Eliot
1209                Moss and J. Craig Schaffert and Robert Scheifler and Alan Snyder},
1210    title       = {CLU Reference Manual},
1211    publisher   = {Springer},
1212    address     = {New York},
1213    year        = 1981,
1214    volume      = 114,
1215    series      = {Lecture Notes in Computer Science}
1216}
1217
1218@manual{Cobol14,
1219    keywords    = {ISO/IEC Cobol 14},
1220    contributer = {pabuhr@plg},
1221    author      = {Cobol14},
1222    title       = {Programming Languages -- {Cobol} ISO/IEC 1989:2014},
1223    edition     = {2nd},
1224    institution = {International Standard Organization},
1225    address     = {\href{https://www.iso.org/standard/51416.html}{https://\-www.iso.org/\-standard/\-51416.html}},
1226    year        = 2014,
1227}
1228
1229@article{coagulation,
1230    keywords    = {register allocation, instruction selection, jello},
1231    contributer = {gjditchfield@plg},
1232    author      = {Michael Karr},
1233    title       = {Code Generation by Coagulation},
1234    journal     = sigplan,
1235    year        = 1984,
1236    month       = jun,
1237    volume      = 19,
1238    number      = 6,
1239    pages       = {1-12},
1240    note        = {Proceedings of the ACM SIGPLAN '84 Symposium on Compiler Construction},
1241    abstract    = {
1242        This paper describes a new approach to code-generation.  The
1243        central tenet is that there must be a more intimate coupling
1244        between register allocation and instruction selection than exists
1245        in present-day technology.  This is achieved by generating code in
1246        very small regions and gradually coalescing the part of the program
1247        that is ``compiled''.
1248    },
1249}
1250
1251@article{Soloway83,
1252    keywords    = {goto, structure programming},
1253    contributer = {pabuhr@plg},
1254    author      = {E. Soloway and J. Bonar and K. Ehrlich},
1255    title       = {Cognitive Strategies and Looping Constructs: An Empirical Study},
1256    journal     = cacm,
1257    month       = nov,
1258    year        = 1983,
1259    volume      = 26,
1260    number      = 11,
1261    pages       = {853-860},
1262}
1263
1264@book{sml:commentary,
1265    author      = {Robin Milner and Mads Tofte},
1266    title       = {Commentary on Standard {ML}},
1267    publisher   = {MIT Press},
1268    address     = {Cambridge},
1269    year        = 1991
1270}
1271
1272@article{Hyman66,
1273    keywords    = {mutual exclusion, software solution, incorrect},
1274    contributer = {pabuhr@plg},
1275    author      = {Harris Hyman},
1276    title       = {Comments on a Problem in Concurrent Programming Control},
1277    journal     = cacm,
1278    month       = jan,
1279    year        = 1966,
1280    volume      = 9,
1281    number      = 1,
1282    pages       = {45},
1283    note        = {Letter to the Editor}
1284}
1285
1286@inproceedings{clos,
1287    keywords    = {},
1288    contributer = {gjditchfield@plg},
1289    author      = {Linda G. DeMichiel and Richard P. Gabriel},
1290    title       = {The Common Lisp Object System: An Overview},
1291    booktitle   = {ECOOP '87. European Conference on Object-Oriented Programming},
1292    year        = 1987,
1293    pages       = {151-170},
1294    publisher   = {Springer}
1295}
1296
1297@book{CommonLisp,
1298    keywords    = {common lisp},
1299    contributer = {pabuhr@plg},
1300    author      = {Guy Steele},
1301    title       = {COMMON LISP: The Language},
1302    publisher   = {Digital Press},
1303    address     = {New York},
1304    year        = 1984
1305}
1306
1307@article{CommonLoops,
1308    author      = {D. Bobrow and K. Kahn and G. Kiczales and L. Masinter and M. Stefik and F. Zdybel},
1309    title       = {CommonLoops: Merging Common Lisp and Object-Oriented Programming},
1310    address     = {Portland, Oregon, U.S.A.},
1311    journal     = {Proc. ACM Conf. on Object-Oriented Systems, Languages and Applications},
1312    year        = 1986,
1313    month       = sep,
1314    pages       = {17-29},
1315}
1316
1317@article{co-overview,
1318    keywords    = {CommonObjects, implementation, encapsulation},
1319    contributer = {gjditchfield@plg},
1320    author      = {Alan Snyder},
1321    title       = {CommonObjects: An Overview},
1322    journal     = sigplan,
1323    year        = 1986,
1324    month       = oct,
1325    volume      = 21,
1326    number      = 10,
1327    pages       = {19-28},
1328    note        = {Object Oriented Programming Workshop}
1329}
1330
1331@article{CSP,
1332    keywords    = {CSP, concurrency},
1333    contributer = {pabuhr@plg},
1334    author      = {C. A. R. Hoare},
1335    title       = {Communicating Sequential Processes},
1336    journal     = cacm,
1337    month       = aug,
1338    year        = 1978,
1339    volume      = 21,
1340    number      = 8,
1341    pages       = {666-677}
1342}
1343
1344@book{Hoare85,
1345    author      = {C. A. R. Hoare},
1346    title       = {Communicating Sequential Processes},
1347    year        = 1985,
1348    isbn        = {0-13-153271-5},
1349    publisher   = {Prentice-Hall},
1350    address     = {Upper Saddle River, NJ, USA},
1351    note        = {\href{http://www.usingcsp.com/cspbook.pdf}{http://\-www.usingcsp.com/\-cspbook.pdf}},
1352}
1353
1354@article{Hansen72a,
1355    keywords    = {monitors, automatic signal},
1356    contributer = {pabuhr@plg},
1357    author      = {Per {Brinch Hansen}},
1358    title       = {A Comparison of Two Synchronizing Concepts},
1359    journal     = acta,
1360    volume      = 1,
1361    year        = 1972,
1362    pages       = {190-199},
1363}
1364
1365@book{Aho06,
1366    author      = {Alfred V. Aho and Monica S. Lam and Ravi Sethi and Jeffrey D. Ullman},
1367    title       = {Compilers: Principles, Techniques, and Tools},
1368    edition     = {2nd},
1369    year        = {2006},
1370    publisher   = {Addison-Wesley Longman Publishing},
1371    address     = {Boston, MA, USA},
1372}
1373
1374@article{Bacon94,
1375    keywords    = {parallelizing compiler},
1376    contributer = {pabuhr@plg},
1377    author      = {David F. Bacon and Susan L. Graham and Oliver J. Sharp},
1378    title       = {Compiler Transformations for High-Performance Com\-puting},
1379    journal     = acmcs,
1380    volume      = 26,
1381    number      = 4,
1382    month       = dec,
1383    year        = 1994,
1384    pages       = {345-420},
1385}
1386
1387@inproceedings{Berger01,
1388    author      = {Emery D. Berger and Benjamin G. Zorn and Kathryn S. McKinley},
1389    title       = {Composing High-Performance Memory Allocators},
1390    booktitle   = {{SIGPLAN} Conference on Programming Language Design and Implementation},
1391    pages       = {114-124},
1392    year        = 2001,
1393    url         = {http://citeseer.ist.psu.edu/berger01composing.html}
1394} 
1395
1396@article{Andrews83,
1397    keywords    = {general concurrency},
1398    contributer = {pabuhr@plg},
1399    author      = {Gregory R. Andrews and Fred B. Schneider},
1400    title       = {Concepts and Notations for Concurrent Programming},
1401    journal     = acmcs,
1402    volume      = 15,
1403    number      = 1,
1404    month       = mar,
1405    year        = 1983,
1406    pages       = {3-43},
1407}
1408
1409@mastersthesis{Mok97,
1410    author      = {Wing Yeung Russell Mok},
1411    title       = {Concurrent Abnormal Event Handling Mechanisms},
1412    school      = {University of Waterloo},
1413    year        = 1997,
1414    month       = sep,
1415    address     = {Waterloo, Ontario, Canada, N2L 3G1},
1416    note        = {\href{http://plg.uwaterloo.ca/theses/MokThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-MokThesis.pdf}},
1417}
1418
1419@article{Gehani86,
1420    keywords    = {Concurrent programming, C, Distributed systems, rendezvous},
1421    contributer = {dgharriss@plg},
1422    author      = {N. H. Gehani and W. D. Roome},
1423    title       = {{Concurrent C}},
1424    journal     = spe,
1425    volume      = 16,
1426    number      = 9,
1427    month       = sep,
1428    year        = 1986,
1429    pages       = {821-844},
1430    abstract    = {
1431        Our objective is to enhance C so that it can be used to write
1432        concurrent programs that can run efficiently on both single computers
1433        and multicomputers.  Our concurrent programming extensions to C are
1434        based on the {\it rendezvous\/} concept.  These extensions include
1435        mechanisms for the declaration and creation of processes, for process
1436        synchronization and interaction, for process termination and abortion.
1437        We give a rationale for our decisions and compare Concurrent C
1438        extensions with the concurrent programming facilities in Ada.
1439        Concurrent C has been implemented on the UNIX system running on a
1440        single processor.  A distributed version of Concurrent C is being
1441        implemented.
1442   },
1443   comment      = {
1444        Select with guarded and screened accepts.  Typed processes.
1445        Process-valued expressions and process variables.  Processes have
1446        execution priority: Create {\em process-type-name}(args) [with
1447        priority(p)], and the priority can be changed on the fly.  Complicated
1448        guard/screen structure on accept: accept {\em transaction}(param names)
1449        [suchthat (exp)] [by (exp)] [compoundstatement].  Accepts cannot
1450        appear in functions!  Can specify timeouts on transaction calls.
1451        Code examples: buffer process, dining philosophers, lock manager.
1452        Section on diffs between Concurrent C and Ada.
1453   }
1454}
1455
1456@article{ConcurrentC++,
1457    keywords    = {concurrency, C++},
1458    contributer = {pabuhr@plg},
1459    author      = {N. H. Gehani and W. D. Roome},
1460    title       = {Concurrent {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}: Concurrent Programming with Class(es)},
1461    journal     = spe,
1462    month       = dec,
1463    year        = 1988,
1464    volume      = 18,
1465    number      = 12,
1466    pages       = {1157-1177}
1467}
1468
1469@article{Courtois71,
1470    keywords    = {reader and writer, p and v},
1471    contributer = {pabuhr@plg},
1472    author      = {P. J. Courtois and F. Heymans and D. L. Parnas},
1473    title       = {Concurrent Control with Readers and Writers},
1474    journal     = cacm,
1475    volume      = 14,
1476    number      = 10,
1477    month       = oct,
1478    year        = 1971,
1479    pages       = {667-668},
1480    annote      = {
1481                Many errors in the two solutions.
1482    }
1483}
1484
1485@misc{NThreadCode13,
1486    keywords    = {N-thread software-solution mutual exclusion},
1487    contributer = {pabuhr@plg},
1488    key         = {concurrent locking},
1489    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
1490    title       = {concurrent-locking},
1491    howpublished= {\href{https://github.com/pabuhr/concurrent-locking}{https://\-github.com/\-pabuhr/\-concurrent-locking}},
1492}
1493
1494@incollection{Reppy93,
1495    keywords    = {ML, concurrency, continuation passing},
1496    contributer = {pabuhr@plg},
1497    author      = {John H. Reppy},
1498    title       = {Concurrent {ML}: Design, Application and Semantics},
1499    booktitle   = {Functional Programming, Concurrency, Simulation and Automated Reasoning},
1500    editor      = {P. E. Lauer},
1501    pages       = {165-198},
1502    publisher   = {Springer},
1503    address     = {Berlin, DE},
1504    year        = 1993,
1505    ISBN        = {3-540-56883-2},
1506    abstract    = {
1507        Concurrent ML (CML) is a high-level language for concurrent
1508        programming. It is an extension of Standard ML (SML) and is implemented
1509        on top of Standard ML of New Jersey (SML/NJ). CML is a practical
1510        language and is being used to build real systems. It demonstrates that
1511        one need not sacrifice high-level notation in order to have good
1512        performance. CML is also a well-defined language. In the tradition of
1513        SML, it has a formal semantics and its type-soundness has been
1514        proven.},
1515    note        = {
1516        Proceedings of International Lecture Series 1991-92, McMaster
1517        UniversityLecture Notes in Computer Science 693.},
1518}
1519
1520@article{BLASE-2,
1521    keywords    = {concurrency, BLASE-2},
1522    contributer = {pabuhr@plg},
1523    author      = {Piyush Mehrotra and John Van Rosendale},
1524    title       = {Concurrent Object Access in BLASE~2},
1525    journal     = sigplan,
1526    volume      = 24,
1527    number      = 4,
1528    month       = apr,
1529    year        = 1989,
1530    pages       = {40-42},
1531    note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming,
1532                   Sept. 26--27, 1988, San Diego, California, U.S.A},
1533}
1534
1535@techreport{Kafura88,
1536    keywords    = {objects, concurrency},
1537    contributer = {pabuhr@plg},
1538    author      = {Dennis Kafura},
1539    title       = {Concurrent Object-Oriented Real-Time Systems Research},
1540    institution = {Department of Computer Science, Virginia Polytechnic},
1541    number      = {TR 88-47},
1542    year        = 1988
1543}
1544
1545@article{Buhr92a,
1546    keywords    = {C++, concurrency, light-weight process, shared memory},
1547    contributer = {pabuhr@plg},
1548    author      = {P. A. Buhr and Glen Ditchfield and R. A. Stroobosscher and B. M. Younger and C. R. Zarnke},
1549    title       = {$\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}: Concurrency in the Object-Oriented Language {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
1550    journal     = spe,
1551    volume      = 22,
1552    number      = 2,
1553    month       = feb,
1554    year        = 1992,
1555    pages       = {137-172},
1556}
1557
1558@manual{uC++,
1559    keywords    = {C++, concurrency, light-weight process, shared memory},
1560    contributer = {pabuhr@plg},
1561    key         = {uC++},
1562    author      = {Peter A. Buhr},
1563    title       = {$\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Annotated Reference Manual, Version 7.0.0},
1564    organization= {University of Waterloo},
1565    month       = sep,
1566    year        = 2018,
1567    note        = {\href{https://plg.uwaterloo.ca/~usystem/pub/uSystem/uC++.pdf}{https://\-plg.uwaterloo.ca/\-$\sim$usystem/\-pub/\-uSystem/uC++.pdf}},
1568}
1569
1570@book{Burns93,
1571    keywords    = {concurrency, Pascal},
1572    contributer = {pabuhr@plg},
1573    author      = {Alan Burns and Geoff Davies},
1574    title       = {Concurrent Programming},
1575    publisher   = {Addison Wesley Longman},
1576    year        = 1993,
1577}
1578
1579@article{Hansen73a,
1580    keywords    = {monitors},
1581    contributer = {pabuhr@plg},
1582    author      = {Per {Brinch Hansen}},
1583    title       = {Concurrent Programming Concepts},
1584    journal     = spe,
1585    month       = dec,
1586    year        = 1973,
1587    volume      = 5,
1588    number      = 4,
1589    pages       = {223-245},
1590}
1591
1592@book{Lea97,
1593    keywords    = {concurrency, Java},
1594    contributer = {pabuhr@plg},
1595    author      = {Doug Lea},
1596    title       = {Concurrent Programming in {J}ava: Design Principles and Patterns},
1597    publisher   = {Addison-Wesley},
1598    address     = {Boston},
1599    year        = 1997,
1600    edition     = {1st},
1601}
1602
1603@book{Hartley98,
1604    keywords    = {concurrency, Java},
1605    contributer = {pabuhr@plg},
1606    author      = {Stephen J. Hartley},
1607    title       = {Concurrent Programming: The {J}ava Programming Language},
1608    publisher   = {Oxford University Press},
1609    year        = 1998,
1610    edition     = {1st},
1611}
1612
1613@book{Lea00,
1614    keywords    = {concurrency, Java},
1615    contributer = {pabuhr@plg},
1616    author      = {Doug Lea},
1617    title       = {Concurrent Programming in {J}ava: Design Principles and Patterns},
1618    publisher   = {Addison-Wesley},
1619    address     = {Boston},
1620    year        = 2000,
1621    edition     = {2nd},
1622}
1623
1624@book{ConcurrentC,
1625    keywords    = {concurrency, C},
1626    contributer = {pabuhr@plg},
1627    author      = {N. H. Gehani and W. D. Roome},
1628    title       = {The {Concurrent C} Programming Language},
1629    publisher   = {Silicon Press},
1630    address     = {Summit},
1631    year        = 1989,
1632}
1633
1634@mastersthesis{Sun15,
1635    author      = {Sun, Xianda},
1636    title       = {Concurrent High-performance Persistent Hash Table In {J}ava},
1637    school      = {School of Computer Sc., University of Waterloo},
1638    year        = 2015,
1639    optaddress  = {Waterloo, Ontario, Canada, N2L 3G1},
1640    note        = {\href{https://uwspace.uwaterloo.ca/handle/10012/10013}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-10013}},
1641}
1642
1643@book{Andrews91:book,
1644    keywords    = {concurrency},
1645    contributer = {pabuhr@plg},
1646    author      = {Gregory R. Andrews},
1647    title       = {Concurrent Programming: Principles and Practice},
1648    publisher   = {Benjamin/Cummings Publish\-ing},
1649    address     = {Redwood City},
1650    year        = 1991,
1651}
1652
1653@article{Buhr05a,
1654    keywords    = {concurrency, myths},
1655    contributer = {pabuhr@plg},
1656    author      = {Peter A. Buhr and Ashif S. Harji},
1657    title       = {Concurrent Urban Legends},
1658    journal     = ccpe,
1659    month       = aug,
1660    year        = 2005,
1661    volume      = 17,
1662    number      = 9,
1663    pages       = {1133-1172},
1664}
1665
1666@mastersthesis{Delisle18,
1667    keywords    = {concurrency, Cforall},
1668    contributer = {pabuhr@plg},
1669    author      = {Thierry Delisle},
1670    title       = {Concurrency in \textsf{C}$\mathbf{\forall}$},
1671    school      = {School of Computer Science, University of Waterloo},
1672    year        = 2018,
1673    optaddress  = {Waterloo, Ontario, Canada, N2L 3G1},
1674    note        = {\href{https://uwspace.uwaterloo.ca/handle/10012/12888}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-12888}},
1675}
1676
1677@article{Delisle18b,
1678    keywords    = {concurrency, Cforall},
1679    contributer = {pabuhr@plg},
1680    author      = {Thierry Delisle and Peter A. Buhr},
1681    title       = {Concurrency in \textsf{C}$\mathbf{\forall}$},
1682    year        = 2018,
1683    journal     = spe,
1684    pages       = {1-32},
1685    note        = {submitted},
1686}
1687
1688@techreport{Buhr90,
1689    keywords    = {objects, concurrency},
1690    contributer = {gjditchfield@plg},
1691    author      = {P. A. Buhr and G. J. Ditchfield and B. M. Younger and C. R. Zarnke}, 
1692    title       = {Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
1693    institution = {Department of Computer Science, University of Waterloo},
1694    address     = {Waterloo, Ontario, Canada, N2L 3G1},
1695    number      = {CS-90-18},
1696    month       = may,
1697    year        = 1990
1698}
1699
1700@book{Burns98,
1701    keywords    = {concurrency, Ada},
1702    author      = {Alan Burns and Andy Wellings},
1703    title       = {Concurrency in {Ada}},
1704    publisher   = {Cambridge University Press},
1705    year        = 1998,
1706    edition     = {2nd},
1707}
1708
1709@book{Bernstein93,
1710    keywords    = {concurrency},
1711    author      = {Arthur J. Bernstein and Philip M. Lewis},
1712    title       = {Concurrency in Programming and Database Systems},
1713    publisher   = {Jones and Bartlett},
1714    year        = 1993,
1715}
1716
1717@inproceedings{Pitman01,
1718    keywords    = {LISP, exception handling},
1719    contributer = {pabuhr@plg},
1720    author      = {Kent M. Pitman},
1721    title       = {Condition Handling in the Lisp Language Family},
1722    booktitle   = {Exception Handling},
1723    publisher   = {Springer},
1724    volume      = 2022,
1725    series      = {LNCS},
1726    year        = 2001,
1727    pages       = {39-59}
1728}
1729
1730@inbook{enhancement,
1731    keywords    = {bounded polymorphism, Comandos},
1732    contributer = {gjditchfield@plg},
1733    author      = {Chris Horn},
1734    title       = {Conformace, Genericity, Inheritance and Enhancement},
1735    pages       = {223-233},
1736    publisher   = {Springer},
1737    year        = 1987,
1738    volume      = 276,
1739    series      = "Lecture Notes in Computer Science",
1740    note        = "ECOOP '87 European Conference on Object-Oriented Programming",
1741    summary     = {
1742        Considers effect of conformance on Meyer's conclusions in
1743        \cite{polymorphism}.
1744
1745        Implementing a swap function as a member of a type {\cd Swappable}
1746        with {\cd in out Top} parameters doesn't work, because conformance
1747        requires arguments to be of type {\cd Top}.
1748
1749        An enhancive type has a type parameter, bounded by some type, and
1750        defines members.  Types conforming to the bound can be passed as
1751        arguments to create types with the extra members.  The signature of
1752        the enhanced type is based on the signature of the argument, not the
1753        bound, as if enhancive types were macros.  Hence enhanced types do not
1754        necessarily conform to each other.  Types conforming to the bound
1755        conform to enhanced types, which allows new functions to be applied
1756        to old types.
1757
1758        Enhancive types are not generic types.  If the argument is omitted,
1759        the bound is used as a default.  Assignment of enhanced types to
1760        default-enhanced types is allowed (enhanced types conform to the
1761        default-enhanced type).  This is (probably) statically type-safe,
1762        because arguments must conform to the bound, and the new members
1763        only use operations defined for the bound.
1764
1765        With facilities for member renaming and deletion, enhancive types
1766        provide the equivalent of constrained generic types.
1767    }
1768}
1769
1770@misc{Taylor10,
1771    keywords    = {const, poisoning},
1772    contributer = {pabuhr@plg},
1773    author      = {Ian Lance Taylor},
1774    title       = {const},
1775    month       = oct,
1776    year        = 2010,
1777    howpublished= {\href{https://www.airs.com/blog/archives/428}
1778                  {https://www.airs.com/\-blog/\-archives/\-428}},
1779}
1780
1781@phdthesis{Ditchfield92,
1782    keywords    = {C, parametric polymorphism, overloading},
1783    contributer = {pabuhr@plg},
1784    author      = {Glen Jeffrey Ditchfield},
1785    title       = {Contextual Polymorphism},
1786    school      = {Department of Computer Science, University of Waterloo},
1787    year        = 1992,
1788    address     = {Waterloo, Ontario, Canada, N2L 3G1},
1789    note        = {\href{http://plg.uwaterloo.ca/theses/DitchfieldThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-DitchfieldThesis.pdf}}
1790}
1791
1792@inproceedings{frameworks:HHG90,
1793    keywords    = {formal},
1794    contributer = {pabuhr@plg},
1795    author      = {Richard Helm and Ian M. Holland and Dipayan Gangopadhyay},
1796    title       = {Contracts: Specifying Behavioural Compositions in Cbject-Oriented Systems},
1797    booktitle   = {Proceedings of ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications},
1798    year        = 1990,
1799    pages       = {169-180},
1800}
1801
1802@article{Wand80,
1803    keywords    = {concurrency, continuation},
1804    contributer = {pabuhr@plg},
1805    author      = {Mitchell Wand},
1806    title       = {Continuation-Based Multiprocessing},
1807    publisher   = {The Lisp Conference},
1808    journal     = {Conference Record of the 1980 Lisp Conference},
1809    pages       = {19-28},
1810    year        = 1980,
1811}
1812
1813@article{Hieb90,
1814    keywords    = {continuations, concurrency},
1815    contributer = {pabuhr@plg},
1816    author      = {Robert Hieb and R. Kent Dybvig},
1817    title       = {Continuations and Concurrency},
1818    journal     = sigplan,
1819    volume      = 25,
1820    number      = 3,
1821    month       = mar,
1822    year        = 1990,
1823    pages       = {128-136},
1824    note        = {Proceedings of the Second ACM SIGPLAN Symposium on Principles \& Practise of Parallel Programming,
1825                   March. 14--16, 1990, Seattle, Washington, U.S.A},
1826}
1827
1828@inproceedings{Haynes84,
1829    keywords    = {continuations, coroutines, Scheme},
1830    contributer = {pabuhr@plg},
1831    author      = {Christopher T. Haynes and Daniel P. Friedman and Mitchell Wand},
1832    title       = {Continuations and Coroutines},
1833    booktitle   = {Conference Record of the 1984 {ACM} Symposium on Lisp and Functional Programming},
1834    organization= {Association for Computing Machinery},
1835    month       = aug,
1836    year        = 1984,
1837    pages       = {293-298},
1838    abstract    = {
1839        The power of first class continuations is demonstrated by implementing
1840        a variety of coroutine mechanisms using only continuations and
1841        functional abstraction. The importance of general abstraction
1842        mechanisms such as continuations is discussed.},
1843}
1844
1845@inproceedings{Zahn74,
1846    keywords    = {goto, structured programming},
1847    contributer = {pabuhr@plg},
1848    author      = {C. T. Zahn},
1849    title       = {Control Statement for Natural Top-down Structured Programming},
1850    booktitle   = {Symposium on Programming Languages},
1851    address     = {Paris, France},
1852    year        = 1974,
1853}
1854
1855@unpublished{Ditchfield:conversions,
1856    contributer = {a3moss@uwaterloo.ca},
1857    author      = {Glen Ditchfield},
1858    title       = {Conversions for \textsf{C}$\mathbf{\forall}$},
1859    note        = {\href{http://plg.uwaterloo.ca/~cforall/Conversions/index.html}{http://\-plg.uwaterloo.ca/\-$\sim$cforall/\-Conversions/\-index.html}},
1860    month       = {Nov},
1861    year        = {2002},
1862    urldate     = {28 July 2016},
1863}
1864
1865@techreport{Dijkstra65,
1866    keywords    = {concurrency, Dekker's algorithm, semaphores},
1867    contributer = {pabuhr@plg},
1868    author      = {Edsger W. Dijkstra},
1869    title       = {Cooperating Sequential Processes},
1870    institution = {Technological University},
1871    address     = {Eindhoven, Netherlands},
1872    year        = 1965,
1873    note        = {Reprinted in \cite{Genuys68} pp. 43--112.}
1874}
1875
1876@book{Marlin80,
1877    keywords    = {coroutines},
1878    contributer = {pabuhr@plg},
1879    author      = {Christopher D. Marlin},
1880    title       = {Coroutines: A Programming Methodology, a Language Design and an Implementation},
1881    publisher   = {Springer},
1882    address     = {New York},
1883    year        = 1980,
1884    volume      = 95,
1885    series      = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis}
1886}
1887 
1888@article{Wang71,
1889    keywords    = {coroutines},
1890    contributer = {pabuhr@plg},
1891    author      = {Arne Wang and Ole-Johan Dahl},
1892    title       = {Coroutine Sequencing in a Block Structured Environment},
1893    journal     = "BIT",
1894    volume      = 11,
1895    month       = nov,
1896    year        = 1971,
1897    pages       = {425-449},
1898}
1899 
1900@article{Castagna95,
1901    keywords    = {type-systems, covariance, contravariance},
1902    contributer = {pabuhr@plg},
1903    author      = {Giuseppe Castagna},
1904    title       = {Covariance and Contravariance : Conflict without a Cause},
1905    journal     = toplas,
1906    volume      = 17,
1907    number      = 3,
1908    month       = may,
1909    year        = 1995,
1910    pages       = {341-447},
1911}
1912
1913@book{Fischer88,
1914    keywords    = {compiler construction},
1915    author      = {Charles N. Fischer and Richard J. {LeBlanc, Jr.}},
1916    title       = {Crafting a Compiler},
1917    publisher   = {Benjamin Cummings},
1918    year        = 1991,
1919}
1920
1921@misc{CS343,
1922    keywords    = {uC++ teaching},
1923    contributer = {pabuhr@plg},
1924    key         = {Peter Buhr},
1925    title       = {CS343},
1926    year        = 2018,
1927    howpublished= {\href{https://www.student.cs.uwaterloo.ca/~cs343}{https://\-www.student.cs.uwaterloo.ca/\-$\sim$cs343}},
1928}
1929
1930@inproceedings{Jim02,
1931    keywords    = {C dialect, parametric polymorphic, safe memory allocation},
1932    contributer = {pabuhr@plg},
1933    author      = {Trevor Jim and Greg Morrisett and Dan Grossman and Michael Hicks and James Cheney and and Yanling Wang},
1934    title       = {{C}yclone: A Safe Dialect of {C}},
1935    booktitle   = {USENIX Annual Technical Conference},
1936    organization= {USENIX Association},
1937    address     = {Monterey, California, U.S.A.},
1938    month       = jun,
1939    year        = 2002,
1940    pages       = {275-288},
1941}
1942
1943% D
1944
1945@manual{D,
1946    keywords    = {D programming language},
1947    contributer = {pabuhr@plg},
1948    title       = {{D} Programming Language},
1949    author      = {Walter Bright and Andrei Alexandrescu},
1950    organization= {Digital Mars},
1951    year        = 2016,
1952    note        = {\href{http://dlang.org/spec/spec.html}{http://\-dlang.org/\-spec/\-spec.html}},
1953}
1954
1955@techreport{Cui90,
1956    keywords    = {exception handling},
1957    contributer = {pabuhr@plg},
1958    author      = {Qian Cui},
1959    title       = {Data-Oriented Exception Handling},
1960    institution = {Department of Computer Science, University of Maryland},
1961    address     = {College Park, Maryland, U.S.A., 20742},
1962    number      = {CS-TR-2384},
1963    month       = jan,
1964    year        = 1990,
1965}
1966
1967@article{Cui92,
1968    contributer = {rkrische@plg},
1969    author      = {Qian Cui and John Gannon},
1970    title       = {Data-oriented Exception Handling},
1971    journal     = {IEEE Transactions on Software Engineering},
1972    month       = may,
1973    year        = 1992,
1974    volume      = 18,
1975    number      = 5,
1976    pages       = {393-401},
1977}
1978
1979@manual{SIMULA87,
1980    keywords    = {Simula standard},
1981    contributer = {gjditchfield@plg},
1982    title       = {Databehandling -- Programspr{\aa}k -- {SIMULA}},
1983    organization= {Standardiseringskommissionen i Sverige},
1984    note        = {Svensk Standard SS 63 61 14},
1985    year        = 1987,
1986    abstract    = {Standard for the programming language SIMULA. Written in English.}
1987}
1988
1989@article{Galil91,
1990    keywords    = {union-find},
1991    contributer = {a3moss@uwaterloo.ca},
1992    title       = {Data structures and algorithms for disjoint set union problems},
1993    author      = {Galil, Zvi and Italiano, Giuseppe F},
1994    journal     = {ACM Computing Surveys (CSUR)},
1995    volume      = 23,
1996    number      = 3,
1997    pages       = {319--344},
1998    year        = 1991,
1999    publisher   = {ACM},
2000}
2001
2002@article{Liskov75,
2003    keywords    = {abstract data types, encapsulation, verification},
2004    contributer = {gjditchfield@plg},
2005    author      = {Barbara H. Liskov},
2006    title       = {Data Types and Program Correctness},
2007    journal     = sigplan,
2008    year        = 1975,
2009    month       = jul,
2010    volume      = 10,
2011    number      = 7,
2012    pages       = {16-17},
2013    summary     = {
2014        Type definitions should contain the implementation of the type and
2015        its operations.  The grouping makes programs simpler and more
2016        understandable.  Encapsulating the definition aids verification and
2017        forces a precise specification of the interface.
2018    }
2019}
2020
2021@article{dtav,
2022    keywords    = {Russell, types},
2023    contributer = {gjditchfield@plg},
2024    author      = {James Donahue and Alan Demers},
2025    title       = {Data Types are Values},
2026    journal     = toplas,
2027    month       = jul,
2028    year        = 1985,
2029    volume      = 7,
2030    number      = 3,
2031    pages       = {426-445},
2032    comment     = {
2033        Data types are sets of operations providing interpretations of
2034        values from a meaningless, typeless universal value space.  Types
2035        and operations are also contained in this value space.
2036
2037        Functions returning types replace generic types.
2038
2039        Polymorphic functions have type parameters.  Evaluation is not
2040        macro expansion:
2041        \begin{verbatim}
2042            R == func [n:val integer; T:type[]] val integer
2043                {if n > 0 => r[n-1, Array[1,10,T]] # n <= 0 => 17 fi}
2044        \end{verbatim}
2045    }
2046}
2047
2048@article{Holt72,
2049    keywords    = {concurrency, deadlock},
2050    contributer = {pabuhr@plg},
2051    author      = {Richard C. Holt},
2052    title       = {Some Deadlock Properties of Computer Systems},
2053    journal     = acmcs,
2054    volume      = 4,
2055    number      = 3,
2056    month       = sep,
2057    year        = 1972,
2058    pages       = {179-196},
2059}
2060
2061@misc{debug-malloc,
2062    keywords    = {memory allocation debugger},
2063    contributer = {gjditchfield@plg},
2064    author      = {Conor P. Cahill},
2065    title       = {debug\_malloc},
2066    howpublished= {comp.sources.unix, volume 22, issue 112},
2067    abstract    = {
2068        This package is a collection of routines which are a drop-in
2069        replacement for the malloc(3), memory(3), string(3), and bstring(3)
2070        library functions.
2071    }
2072}
2073
2074@book{sml,
2075    keywords    = {},
2076    contributer = {pabuhr@plg},
2077    author      = {Robin Milner and Mads Tofte and Robert Harper},
2078    title       = {The Definition of Standard {ML}},
2079    publisher   = {MIT Press},
2080    address     = {Cambridge},
2081    year        = 1990
2082}
2083
2084@techreport{sml:old,
2085    keywords    = {},
2086    contributer = {gjditchfield@plg},
2087    author      = {Robert Harper and Robin Milner and Mads Tofte},
2088    title       = {The Definition of Standard {ML}, Version 2},
2089    institution = {Department of Computer Science, University of Edinburgh},
2090    year        = 1988,
2091    address     = {The King's Buildings, Edinburgh EH9 3JZ},
2092    type        = {LFCS Report Series}, month = aug, number = {ECS-LFCS-88-62}
2093}
2094
2095@inproceedings{Reynolds72,
2096    keywords    = {continuation},
2097    contributer = {pabuhr@plg},
2098    author      = {John Reynolds},
2099    title       = {Definitional Interpreters for Higher Order Programming Languages},
2100    booktitle   = {ACM Conference Proceedings},
2101    organization= {ACM},
2102    year        = 1972,
2103    pages       = {717-740}
2104}
2105
2106@article{Buhr16,
2107    keywords    = {Dekker's algorithm, software solution, mutual exclusion, performance experiment},
2108    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
2109    title       = {Dekker's Mutual Exclusion Algorithm Made RW-Safe},
2110    journal     = ccpe,
2111    volume      = 28,
2112    number      = 1,
2113    pages       = {144-165},
2114    month       = jan,
2115    year        = 2016,
2116}
2117
2118@misc{steelman,
2119    keywords    = {Ada},
2120    contributer = {gjditchfied@plg},
2121    author      = {High Order Language Working Group},
2122    title       = {Department of Defense Requirements for High Order Computer Programming Languages},
2123    month       = jun, year = 1978,
2124    note        = {Reprinted in \cite{pldesign}.}
2125}
2126
2127@incollection{Tsay98,
2128    keywords    = {local spins, mutual exclusion, read/write atomicity, refinement, scalability},
2129    author      = {Yih-Kuen Tsay},
2130    title       = {Deriving a scalable algorithm for mutual exclusion},
2131    booktitle   = {Distributed Computing},
2132    editor      = {Shay Kutten},
2133    volume      = {1499},
2134    series      = {LNCS},
2135    publisher   = {Springer},
2136    address     = {Berlin Heidelberg},
2137    year        = {1998},
2138    pages       = {393-407},
2139}
2140
2141@book{Aho74,
2142    keywords    = {algorithms, textbook, union-find},
2143    contributer = {a3moss@uwaterloo.ca},
2144    title       = {The Design and Analysis of Computer Algorithms},
2145    author      = {Aho, Alfred V and Hopcroft, John E and Ullman, Jeffrey D},
2146    year        = {1974},
2147    publisher   = {Addison-Wesley},
2148    address     = {Reading, MA, USA}
2149}
2150
2151@article{Conway63,
2152    keywords    = {coroutine, original},
2153    contributer = {pabuhr@plg},
2154    author      = {Melvin E. Conway},
2155    title       = {Design of a Separable Transition-Diagram Compiler},
2156    journal     = cacm,
2157    month       = jul,
2158    year        = 1963,
2159    volume      = 6,
2160    number      = 7,
2161    pages       = {396-408},
2162}
2163
2164@book{Stroustrup94,
2165    keywords    = {C++},
2166    contributor = {wyrmok@plg},
2167    author      = {Bjarne Stroustrup},
2168    title       = {The Design and Evolution of {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
2169    publisher   = {Addison-Wesley},
2170    address     = {Boston},
2171    year        = 1994
2172}
2173
2174@inproceedings{st:concurrent,
2175    keywords    = {concurrency, Smalltalk, futures},
2176    contributer = {gjditchfield@plg},
2177    author      = {Yasuhiko Yokote and Mario Tokoro},
2178    title       = {The Design and Implementation of {ConcurrentSmalltalk}},
2179    crossref    = "OOPSLA86",
2180    pages       = {331-340},
2181    comment     = {
2182        Objects are ordinary Smalltalk objects or ``atomic'' objects, which
2183        process messages one at a time in FIFO order.  Asynchronous method
2184        calls are made by appending ``\&'' at the call site.  The sender does
2185        not wait for a reply.  If the method returns a value, it
2186        (immediately?) returns a CBox object, which is like a future.  The
2187        sender can send the ``receive'' message to the CBox, which blocks
2188        until the CBox contains a value.
2189
2190        A method can execute the ``\verb|^|'' statement to return an object
2191        and terminate, or it can execute ``\verb|^^|'' to return an object
2192        and continue execution.  If ``\verb|^^foo|'' is executed after
2193        ``\verb|^^bar|'', foo is discarded, since bar has already been
2194        returned.
2195
2196        The article does not say whether asynchronous messages can be sent
2197        to ordinary objects, or whether ordinary messages can be sent to
2198        atomic objects.
2199    }
2200}
2201
2202@inproceedings{Ichbiah83,
2203    keywords    = {Ada, packages, generics},
2204    contributer = {gjditchfield@plg},
2205    author      = {Jean D. Ichbiah},
2206    title       = {On the Design of {Ada}},
2207    booktitle   = {Information Processing 83},
2208    year        = 1983,
2209    month       = sep, pages = {1-10},
2210    editor      = {R. E. A. Mason},
2211    organization= {IFIP},
2212    publisher = {North-Holland},
2213    summary = {
2214        Packages group related declarations or subprograms, and encapsulate
2215        data types.  Separate interfaces and bodies promotes information
2216        hiding by removing the need to scan the body, allows the body to be
2217        confidential, and provides a better specification of the contract
2218        between client and implementor.  Generics are an efficient way to
2219        factor out parts of similar definitions.
2220    }
2221}
2222
2223@book{Motet96,
2224    keywords    = {Ada, exception handling},
2225    contributer = {wyrmok@plg},
2226    author      = {G. Motet and A. Mapinard and J. C. Geoffroy},
2227    title       = {Design of Dependable {A}da Software},
2228    publisher   = {Prentice-Hall},
2229    address     = {Englewood Cliffs},
2230    year        = 1996,
2231}
2232 
2233@article{Richardson93,
2234    keywords    = {C++, persistence, database},
2235    contributer = {pabuhr@plg},
2236    author      = {Joel E. Richardson and Michael J. Carey and Daniel T. Schuh},
2237    title       = {The Design of the {E} Programming Language},
2238    journal     = toplas,
2239    month       = jul,
2240    year        = 1993,
2241    volume      = 15,
2242    number      = 3,
2243    pages       = {494-534},
2244}
2245
2246@article{Hansen81b,
2247    keywords    = {concurrency, monitor, critical region},
2248    contributer = {pabuhr@plg},
2249    author      = {Per {Brinch Hansen}},
2250    title       = {The Design of {E}dison},
2251    journal     = spe,
2252    volume      = 11,
2253    number      = 4,
2254    month       = apr,
2255    year        = 1981,
2256    pages       = {363-396},
2257}
2258
2259@book{Gamma95,
2260    keywords    = {design patterns},
2261    author      = {Erich Gamma and Richard Helm and Ralph Johnson and John Vlissides},
2262    title       = {Design Patterns: Elements of Reusable Object-Oriented Software},
2263    publisher   = {Addison-Wesley},
2264    address     = {Boston},
2265    year        = 1995,
2266    series      = {Professional Computing Series},
2267}
2268
2269@inproceedings{Wirth74,
2270    keywords    = {},
2271    contributer = {gjditchfield@plg},
2272    author      = {Niklaus Wirth},
2273    title       = {On the Design of Programming Languages},
2274    booktitle   = {Information Processing 74},
2275    year        = 1974,
2276    pages       = {386-393},
2277    publisher   = {North Holland Publishing Company},
2278    note        = {Reprinted in \cite{pldesign}.}
2279}
2280
2281@techreport{forceone,
2282    keywords    = {Parametric polymorphism, ForceOne},
2283    contributer = {gjditchfield@plg},
2284    author      = {Andrew K. Wright},
2285    title       = {Design of the Programming Language {ForceOne}},
2286    institution = {University of Waterloo},
2287    month       = feb, year = 1987,
2288    number      = {CS-87-10}
2289}
2290
2291@techreport{x-2,
2292    keywords    = {object based},
2293    contributer = {gjditchfield@plg},
2294    author      = {David W. Sandberg},
2295    title       = {The Design of the Programming Language {X-2}},
2296    institution = {Oregon State University},
2297    year        = 1985,
2298    address     = {Department of Computer Science, Corvallis, Oregon, 97331},
2299    number      = {85-60-1}
2300}
2301
2302@article{Ritchie93,
2303    keywords    = {C, history},
2304    contributer = {pabuhr@plg},
2305    author      = {Ritchie, Dennis M.},
2306    title       = {The Development of the {C} Language},
2307    journal     = sigplan,
2308    volume      = 28,
2309    number      = 3,
2310    month       = mar,
2311    year        = 1993,
2312    pages       = {201--208},
2313    url         = {http://doi.acm.org/10.1145/155360.155580},
2314    publisher   = {ACM},
2315    address     = {New York, NY, USA},
2316} 
2317
2318@article{design,
2319    keywords    = {Smalltalk, designing classes},
2320    contributer = {gjditchfield@plg},
2321    author      = {Ralph E. Johnson and Brian Foote},
2322    title       = {Designing Reusable Classes},
2323    journal     = joop,
2324    year        = 1988,
2325    volume      = 1,
2326    number      = 2,
2327    pages       = {22-35},
2328    comment     = {
2329        Abstract classes represent standard protocols.  ``It is better to
2330        inherit from an abstract class than from a concrete class''.
2331        Frameworks are collections of related abstract classes.  Successful
2332        abstractions are discovered, not designed.
2333
2334        Protocols: ``If an operation X is implemented by performing a
2335        similar operation on the components of the receiver, then that
2336        operation should also be named X''.  Eliminate case analysis by
2337        creating classes with the same operations.  Create classes to
2338        represent bundles of parameters.  Shrink methods larger than 30
2339        lines.
2340
2341        Hierarchies should be deep and narrow.  Subclasses should be
2342        specializations.
2343
2344        Frameworks: split large classes.  Factor implementation differences
2345        into subcomponents.  Separate methods that do not share instance
2346        variables into components that reflect the different views of the
2347        object.  Send messages to components, not self.  Reduce implicit
2348        parameter passing through instance variables.
2349    }
2350}
2351
2352@article{dim:c++,
2353    keywords    = {Dimensional Analysis, C++},
2354    contributer = {gjditchfield@plg},
2355    author      = {Robert F. Cmelic and Narain Gehani},
2356    title       = {Dimensional Analysis with {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
2357    journal     = {IEEE Software},
2358    month       = may, year = 1988,
2359    volume      = 5, number = 3, pages = {21-29}
2360}
2361
2362@article{Wegner87,
2363    contributer = {pabuhr@plg},
2364    author      = {Peter Wegner},
2365    title       = {Dimensions of Object--Based Language Design},
2366    journal     = sigplan,
2367    volume      = 22,
2368    number      = 12,
2369    month       = dec,
2370    year        = 1987,
2371    pages       = {168-182},
2372    note        = {Proceedings of the OOPSLA'87 Conference, Oct. 4--8, 1987, Orlando, Florida},
2373}
2374
2375@book{Dijkstra76,
2376    keywords    = {concurrent assignment},
2377    author      = {E. W. Dijkstra},
2378    title       = {A Discipline of Programming},
2379    publisher   = {Prentice-Hall},
2380    address     = {Englewood Cliffs},
2381    year        = 1976,
2382}
2383
2384@book{Lynch96,
2385    keywords    = {distributed algorithms},
2386    author      = {Nancy A. Lynch},
2387    title       = {Distributed Algorithms},
2388    publisher   = {Morgan Kaufmann},
2389    year        = 1996,
2390}
2391
2392@book{Tanenbaum02,
2393    keywords    = {distributed programming},
2394    author      = {Andrew S. Tanenbaum and Maarten van Steen},
2395    title       = {Distributed Systems: Principles and Paradigms},
2396    publisher   = {Prentice-Hall},
2397    address     = {Englewood Cliffs},
2398    year        = 2002,
2399}
2400
2401@inproceedings{Cargill90,
2402    keywords    = {concurrency},
2403    contributer = {pabuhr@plg},
2404    author      = {Tom A. Cargill},
2405    title       = {Does {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Really Need Multiple Inheritance?},
2406    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference Proceedings},
2407    organization= {USENIX Association},
2408    address     = {San Francisco, California, U.S.A.},
2409    month       = apr,
2410    year        = 1990,
2411    pages       = {315-323}
2412}
2413
2414@misc{Dotty-github,
2415    keywords = {dotty,scala},
2416    contributer = {a3moss@uwaterloo.ca},
2417    author = {Martin Odersky},
2418    title = {Dotty},
2419    howpublished = {\href{https://github.com/lampepfl/dotty}{https://\-github.com/\-lampepfl/\-dotty}},
2420    note = {Acessed: 2019-02-22}
2421}
2422
2423@unpublished{Duff83,
2424    keywords    = {C, switch statement, control flow},
2425    contributer = {pabuhr@plg},
2426    author      = {Tom Duff},
2427    title       = {Duff's Device},
2428    month       = nov,
2429    year        = 1983,
2430    note        = {\href{http://www.lysator.liu.se/c/duffs-device.html}{http://\-www.lysator.liu.se/\-c/\-duffs-device.html}}
2431}
2432
2433@manual{dwarf2,
2434    keywords    = {Debugging DWARF2 specification},
2435    contributer = {rkrische@plg},
2436    title       = {DWARF Debugging Information Format},
2437    organization= {Unix International Programming Languages SIG},
2438    publisher   = {Unix International},
2439    address     = {Waterview Corporate Center, 20 Waterview Boulevard, Parsippany, NJ 07054},
2440    year        = {1993}
2441}
2442
2443@article{classicada,
2444    keywords    = {Classic Ada},
2445    contributer = {gjditchfield@plg},
2446    author      = {Cameron M. Donaldson},
2447    title       = {Dynamic Binding and Inheritance in an Object-Oriented {Ada} Design},
2448    journal     = {Journal of Pascal, {Ada} \& Modula-2},
2449    year        = 1990,
2450    month       = {jul/aug}, volume = 9, number = 4, pages = {12-19},
2451    comment     = {
2452        Classes are like packages: they can contain subprograms, types,
2453        variables, generic instantiations, and exceptions.  They can also
2454        contain class methods, instance methods, and instance variables,
2455        and define creation and initialization subprograms or methods for
2456        instances.  Single inheritance provides inheritance of
2457        implementations. Dynamic binding is done with a {\em send}
2458        statement that invokes a class or instance method.  A preprocessor
2459        converts Classic Ada to normal Ada.
2460    }
2461}
2462
2463@article{Costanza03,
2464    keywords    = {dynamic call},
2465    contributer = {pabuhr@plg},
2466    author      = {Pascal Costanza},
2467    title       = {Dynamic Scoped Functions as the Essence of {AOP}},
2468    journal     = sigplan,
2469    volume      = 38,
2470    number      = 8,
2471    month       = aug,
2472    year        = 2003,
2473    pages       = {29-35},
2474}
2475
2476% E
2477
2478@inproceedings{Wegbreit71,
2479    keywords    = {polymorphism},
2480    contributer = {pabuhr@plg},
2481    author      = {B. Wegbreit},
2482    title       = {The ECL Programming System},
2483    booktitle   = {Proceedings of AFIPS 1971 FJCC},
2484    publisher   = {AFIPS Press, vol. 39},
2485    address     = {Montvale, New Jersey, U.S.A},
2486    year        = 1971,
2487    pages       = {253-262},
2488}
2489
2490@manual{JavaScript,
2491    keywords    = {JavaScript},
2492    contributer = {pabuhr@plg},
2493    title       = {ECMAScript 2015 Language Specification {JavaScript}},
2494    organization= {ECAM International},
2495    address     = {Rue du Rhone 114, CH-1204 Geneva, Switzerland},
2496    month       = jun,
2497    year        = 2015,
2498    note        = {6th Edition}
2499}
2500
2501@inproceedings{Peterson77,
2502    keywords    = {N-thread software-solution mutual exclusion},
2503    contributer = {pabuhr@plg},
2504    author      = {Gary L. Peterson and Michael J. Fischer},
2505    title       = {Economical Solutions for the Critical Section Problem in a Distributed System (Extended Abstract)},
2506    booktitle   = {Proceedings of the Ninth Annual ACM Symposium on Theory of Computing},
2507    series      = {STOC '77},
2508    year        = 1977,
2509    location    = {Boulder, Colorado, USA},
2510    pages       = {91--97},
2511    numpages    = {7},
2512    publisher   = {ACM},
2513    address     = {New York, NY, USA},
2514}
2515
2516@article{Hansen81a,
2517    keywords    = {concurrency, monitor, critical region},
2518    contributer = {pabuhr@plg},
2519    author      = {Per {Brinch Hansen}},
2520    title       = {{E}dison---a Multiprocessor Language},
2521    journal     = spe,
2522    volume      = 11,
2523    number      = 4,
2524    month       = apr,
2525    year        = {1981},
2526    pages       = {325-361},
2527}
2528
2529@article{Tarjan75,
2530 keywords = {union-find},
2531 contributer = {a3moss@uwaterloo.ca},
2532 author = {Tarjan, Robert Endre},
2533 title = {Efficiency of a Good But Not Linear Set Union Algorithm},
2534 journal = {J. ACM},
2535 issue_date = {April 1975},
2536 volume = {22},
2537 number = {2},
2538 month = apr,
2539 year = {1975},
2540 issn = {0004-5411},
2541 pages = {215--225},
2542 numpages = {11},
2543 url = {http://doi.acm.org/10.1145/321879.321884},
2544 doi = {10.1145/321879.321884},
2545 acmid = {321884},
2546 publisher = {ACM},
2547 address = {New York, NY, USA},
2548} 
2549
2550@book{Eiffel,
2551    keywords    = {Eiffel},
2552    contributer = {pabuhr@plg},
2553    author      = {Bertrand Meyer},
2554    title       = {Eiffel: The Language},
2555    publisher   = {Prentice-Hall},
2556    address     = {Englewood Cliffs},
2557    year        = 1992,
2558    series      = {Prentice-Hall Object-Oriented Series},
2559}
2560
2561@article{WS:overload,
2562    keywords    = {compilation},
2563    contributer = {gjditchfield@plg},
2564    author      = {Peter J. L. Wallis and Bernhard W. Silverman},
2565    title       = {Efficient Implementation of the {Ada} Overloading Rules},
2566    journal     = ipl,
2567    year        = 1980,
2568    month       = apr, volume = 10, number = 3, pages = {120-123},
2569    comment     = {
2570        The ``two-pass'' algorithm.  An upward pass over a parse tree
2571        calculates the set of possible result types of operators.  The
2572        root must have exactly one type, produced in one way.  A
2573        downward pass selects the version of the operator that produces the
2574        desired result type, thus setting the result types of subtrees.
2575        See \cite{D:overload}.
2576    }
2577}
2578
2579@techreport{Habermann80,
2580    keywords    = {Ada, threads},
2581    contributer = {pabuhr@plg},
2582    author      = {A. N. Habermann and I. R. Nassi},
2583    title       = {Efficient Implementation of {Ada} Tasks},
2584    institution = {Carnegie-Mellon University},
2585    number      = {CMU-CS-80-103},
2586    year        = 1980
2587}
2588
2589@article{Emerald,
2590    keywords    = {concurrency, polymorphism},
2591    contributer = {pabuhr@plg},
2592    author      = {Rajendra K. Raj and Ewan Tempero and Henry M. Levy and Andrew P. Black and Norman C. Hutchinson and Eric Jul},
2593    title       = {Emerald: A General-Purpose Programming Language},
2594    journal     = spe,
2595    month       = jan,
2596    year        = 1991,
2597    volume      = 21,
2598    number      = 1,
2599    pages       = {91-118}
2600}
2601
2602@InProceedings{chambers89a,
2603    keywords    = {maps, delegation},
2604    author      = "Craig Chambers and David Ungar and Elgin Lee",
2605    title       = "An Efficient Implementation of {SELF}, a Dynamically-Typed
2606                 Object-Oriented Language Based on Prototypes",
2607    crossref    = "OOPSLA89",
2608    pages       = {49-70}
2609}
2610
2611@article{oop:encapsulation,
2612    keywords    = {Encapsulation, Inheritance, Subclasses, Multiple Inheritance},
2613    contributer = {gjditchfield@plg},
2614    author      = {Alan Snyder},
2615    title       = {Encapsulation and Inheritance in Object-Oriented Programming
2616        Languages},
2617    journal     = sigplan,
2618    volume      = {21},    number = {11},
2619    pages       = {38-45},
2620    month       = nov, year = 1986,
2621    comment     = {
2622        Client, child interfaces should be distinct.  Child interface
2623        shouldn't grant total access to parent.
2624
2625        Rules for redefining parent variable name in a child affect
2626        re-implementation of the parent.
2627
2628        Inheritance can be a promise to obey the semantics of the parent,
2629        or code reuse; the two may be contradictory.  Unification
2630        exposes use of inheritance: a child can not be re-implemented
2631        without breaking code that assumes that it is a subclass of the
2632        original parent.  If a class uses the names of its parents'
2633        ancestors, then inheritance is part of the parent's child
2634        interface.
2635
2636        Linearizing a multiple inheritance tree means that a class's use of
2637        calls on super need to be understood before it is used as a parent.
2638        Merging repeated ancestors exposes inheritance if an ancestor is
2639        re-implemented.  Forbidding inheritance of distinct methods with
2640        the same name exposes implementation of ancestors.  Proposed
2641        solution treats the set of ancestors as a tree.
2642    }
2643}
2644
2645@article{st:encapsulator,
2646    keywords    = {encapsulator, Smalltalk, monitor},
2647    contributer = {gjditchfield@plg},
2648    author      = {Geoffrey A. Pascoe},
2649    title       = {Encapsulators: A New Software Paradigm in Smalltalk-80},
2650    journal     = sigplan,
2651    volume      = {21},    number       = {11},
2652    pages       = {341-346},
2653    month       = nov, year = 1986,
2654    comment     = {
2655        Encapsulators are objects that surround other objects.
2656        Pre- and post-actions are performed when messages are sent to the
2657        encapsulated object.  They are created here by sending the message
2658        object: to an encapsulator class.  Examples given are monitors,
2659        atomic objects, and Model (for model-view-controller interfaces).
2660
2661        Encapsulator classes use a family of selectors that the
2662        encapsulated object will not respond to.  Messages for the
2663        encapsulated object are passed on by trapping them with the
2664        doesNotUnderstand method.  Various fiddles were needed when setting
2665        up the class and metaclass hierarchies.  A few selectors (==,
2666        class) always directly invoke primitive methods; they can't be
2667        used.
2668
2669        Can an encapsulated object be an encapsulator?  Probably, but the
2670        middle object's selectors are inaccessible.
2671    }
2672}
2673
2674@manual{EPT,
2675    keywords    = {concurrency, light-weight threads},
2676    contributer = {pabuhr@plg},
2677    key         = {Encore},
2678    title       = {Encore Parallel Thread Manual, 724-06210},
2679    organization= {Encore Computer Corporation},
2680    month       = may,
2681    year        = 1988,
2682}
2683
2684@manual{Erlang,
2685    keywords    = {Erlang},
2686    contributer = {pabuhr@plg},
2687    key         = {Erlang},
2688    title       = {Erlang/OTP System Documentation 8.1},
2689    organization= {Erlang AB},
2690    month       = sep,
2691    year        = 2016,
2692    note        = {\href{http://erlang.org/doc/pdf/otp-system-documentation.pdf}{http://\-erlang.org/\-doc/\-pdf/\-otp-system-documentation.pdf}},
2693}
2694
2695@inproceedings{MH88,
2696    keywords    = {modules, general sums, general products},
2697    contributer = {gjditchfield@plg},
2698    author      = {John C. Mitchell and Robert Harper},
2699    title       = {The Essence of {ML}},
2700    booktitle   = popl,
2701    year        = 1988,
2702    pages       = {28-46}
2703}
2704
2705@book{LeVerrand,
2706    keywords    = {},
2707    author      = {D. Le Verrand},
2708    title       = {Evaluating {Ada}},
2709    publisher   = {North Oxford Academic},
2710    year        = 1985
2711}
2712
2713@inproceedings{Bloom79,
2714    keywords    = {concurrency},
2715    contributer = {pabuhr@plg},
2716    author      = {Toby Bloom},
2717    title       = {Evaluating Synchronization Mechanisms},
2718    booktitle   = {Proceedings of the Seventh Symposium on Operating Systems Principles},
2719    organization= {ACM SIGOPS},
2720    address     = {Pacific Grove, California, U.S.A},
2721    month       = dec,
2722    year        = 1979,
2723    pages       = {24-32}
2724}
2725
2726@inproceedings{XaaS,
2727    keywords    = {Everything as a Service, Anything as a Service, Cloud computing, SOA},
2728    contributer = {pabuhr@plg},
2729    author      = {Duan, Yucong and Fu, Guohua and Zhou, Nianjun and Sun, Xiaobing and Narendra, Nanjangud C. and Hu, Bo},
2730    title       = {Everything As a Service (XaaS) on the Cloud: Origins, Current and Future Trends},
2731    booktitle   = {Proceedings of the 2015 IEEE 8th International Conference on Cloud Computing},
2732    series      = {CLOUD'15},
2733    year        = {2015},
2734    pages       = {621--628},
2735    publisher   = {IEEE Computer Society},
2736    address     = {Washington, DC, USA},
2737}
2738
2739@article{Buhr06a,
2740    keywords    = {concurrency, C++, uC++},
2741    contributer = {pabuhr@plg},
2742    author      = {Peter A. Buhr and Richard C. Bilson},
2743    title       = {Examining $\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} :
2744                   High-level Object-Oriented Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
2745    journal     = {Dr. Dobb's Journal : Software Tools for the Professional Programmer},
2746    month       = feb,
2747    year        = 2006,
2748    volume      = 31,
2749    number      = 2,
2750    pages       = {36-40},
2751}
2752
2753@article{ExceptionalC,
2754    keywords    = {exception handling, asynchronous events},
2755    contributer = {wyrmok@plg},
2756    author      = {N. H. Gehani},
2757    title       = {Exceptional {C} or {C} with Exceptions},
2758    journal     = spe,
2759    year        = 1992,
2760    month       = oct,
2761    volume      = 22,
2762    number      = 10,
2763    pages       = {827-848},
2764    comment     = {
2765        It is the most extensive exceptional handling mechanism thus
2766        far. Though it doesn't have Mesa resumption, it has
2767        asynchronous signal which is more general and abstract than
2768        the unix signal mechanism.  It has an Eiffel like retry
2769        mechanism. Consequently, the scope of guarded region is not
2770        immediately terminated when an exception is raised. In fact,
2771        an exception handler creates a scope under its guarded
2772        region.
2773        }
2774}
2775
2776@incollection{Buhr02,
2777    keywords    = {exception handling},
2778    contributer = {pabuhr@plg},
2779    author      = {Peter A. Buhr and Ashif Harji and W. Y. Russell Mok},
2780    title       = {Exception Handling},
2781    editor      = {Marvin V. Zelkowitz},
2782    booktitle   = {Advances in COMPUTERS},
2783    publisher   = {Academic Press},
2784    address     = {London},
2785    volume      = 56,
2786    year        = 2002,
2787    pages       = {245-303},
2788}
2789
2790@article{Cargill94,
2791    keywords    = {exception handling},
2792    contributer = {pabuhr@plg},
2793    author      = {Tom Cargill},
2794    title       = {Exception Handling: a False Sense of Security},
2795    journal     = {{C}{\kern-.2em\hbox{\large\texttt{+\kern-.2em+}}} Report},
2796    year        = 1994,
2797    month       = nov,
2798    volume      = 6,
2799    number      = 9,
2800    note        = {http://www.informit.com/\-content/\-images/\-020163371x/\-supplements/\-Exception\_\-Handling\_\-Article.\-html}
2801}
2802
2803@article{Knudsen84,
2804    keywords    = {static exception handling, BETA, sequel},
2805    contributer = {wyrmok@plg},
2806    author      = {J{\o}rgen Lindskov Knudsen},
2807    title       = {Exception Handling --- A Static Approach},
2808    journal     = spe,
2809    year        = 1984,
2810    month       = may,
2811    volume      = 14,
2812    number      = 5,
2813    pages       = {429-449},
2814}
2815
2816@article{Drew94,
2817    keywords    = {exceptions, exception handling},
2818    contributer = {wyrmok@plg},
2819    author      = {Steven J. Drew and K. John Gough},
2820    title       = {Exception Handling: Expecting the Unexpected},
2821    journal     = {Computer Languages},
2822    year        = 1994,
2823    month       = may,
2824    volume      = 20,
2825    number      = 2,
2826    comment     = {
2827        A recent and good survey on various exception handling mechanisms found
2828        in imperative programming languages. It classifies various mechanism in
2829        terms of flow control and scopes. Asynchronous exceptions and signals
2830        are also covered as Exceptional C is in the survey.
2831        }
2832}
2833
2834@article{Koenig90,
2835    keywords    = {exception handling},
2836    contributer = {pabuhr@plg},
2837    author      = {Andrew Koenig and Bjarne Stroustrup},
2838    title       = {Exception Handling for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
2839    journal     = joop,
2840    month       = {July/August},
2841    year        = 1990,
2842    volume      = 3,
2843    number      = 2,
2844    pages       = {16-33},
2845}
2846
2847@article{Lee83,
2848    keywords    = {exception handling, C},
2849    contributer = {pabuhr@plg},
2850    author      = {P. A. Lee},
2851    title       = {Exception Handling in {C} Programs},
2852    journal     = spe,
2853    volume      = 13,
2854    number      = 5,
2855    month       = may,
2856    year        = 1983,
2857    pages       = {389-405},
2858}
2859
2860@article{Liskov79,
2861    keywords    = {exception handling},
2862    contributer = {pabuhr@plg},
2863    author      = {Barbara H. Liskov and Alan Snyder},
2864    title       = {Exception Handling in {CLU}},
2865    journal     = ieeese,
2866    month       = nov,
2867    year        = 1979,
2868    volume      = {SE-5},
2869    number      = 6,
2870    pages       = {546-558},
2871}
2872
2873@article{Szalas85,
2874    keywords    = {concurrency, C++},
2875    contributer = {pabuhr@plg},
2876    author      = {Andrzej Szalas and Danuta Szczepanska},
2877    title       = {Exception Handling in Parallel Computations},
2878    journal     = sigplan,
2879    publisher   = {ACM},
2880    address     = {New York, NY, USA},
2881    volume      = 20,
2882    number      = 10,
2883    month       = oct,
2884    year        = 1985,
2885    pages       = {95-104},
2886}
2887
2888@article{MacLaren77,
2889    keywords    = {exception handling, PL/I},
2890    contributer = {pabuhr@plg},
2891    author      = {M. Donald MacLaren},
2892    title       = {Exception Handling in {PL/I}},
2893    journal     = sigplan,
2894    volume      = 12,
2895    number      = 3,
2896    month       = mar,
2897    year        = 1977,
2898    pages       = {101-104},
2899    note        = {Proceedings of an ACM Conference on Language Design for Reliable Software,
2900                   March 28--30, 1977, Raleigh, North Carolina, U.S.A.},
2901}
2902
2903@article{Goodenough75,
2904    keywords    = {exception handling},
2905    contributer = {pabuhr@plg},
2906    author      = {J. B. Goodenough},
2907    title       = {Exception Handling: Issues and a Proposed Notation},
2908    journal     = cacm,
2909    month       = dec,
2910    year        = 1975,
2911    volume      = 18,
2912    number      = 12,
2913    pages       = {683-696},
2914}
2915
2916@article{Lampson80,
2917    keywords    = {monitors},
2918    contributer = {pabuhr@plg},
2919    author      = {B. W. Lampson and D. D. Redell},
2920    title       = {Experience with Processes and Monitors in Mesa},
2921    journal     = cacm,
2922    volume      = 23,
2923    number      = 2,
2924    month       = feb,
2925    year        = 1980,
2926    pages       = {105-117},
2927}
2928
2929@inproceedings{Shopiro87,
2930    keywords    = {concurrency},
2931    contributer = {pabuhr@plg},
2932    author      = {Jonathan E. Shopiro},
2933    title       = {Extending the {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Task System for Real-Time Control},
2934    booktitle   = {Proceedings and Additional Papers {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Workshop},
2935    organization= {USENIX Association},
2936    address     = {Santa Fe, New Mexico, U.S.A},
2937    month       = nov,
2938    year        = 1987,
2939    pages       = {77-94}
2940}
2941
2942@article{Modula-2+,
2943    keywords    = {Modula-2, exceptions, garbage collection, concurrency},
2944    contributer = {gjditchfield@plg},
2945    author      = {Paul Rovner},
2946    title       = {Extending Modula-2 to Build Large, Integrated Systems},
2947    journal     = {IEEE Software},
2948    month       = nov,
2949    year        = 1986,
2950    volume      = 3,
2951    number      = 6,
2952    pages       = {46-57},
2953    comment     = {
2954        Exceptions can have a parameter.  Procedures can declare the
2955        exceptions they can propagate; others are converted to {\tt
2956        SYSTEM.Fail}.  If they don't, all exceptions propagate.
2957        Block cleanup statements execute no matter how control leaves the
2958        block.
2959
2960        {\tt REF t} is a garbage-collected pointer.  A {\tt REFANY} can be
2961        assigned any {\tt REF t}.  Open array types can be used in
2962        parameter and {\tt REF} types.  {\tt NEW} creates arrays of fixed,
2963        dynamically determined size.
2964
2965        The {\tt THREAD} module provides lightweight processes, semaphores,
2966        and conditions.  A statement {\tt LOCK {\em semaphore} DO
2967        {\em statements} END} is built in.
2968
2969        {\tt SAFE} modules do run-time checks, and only import {\tt
2970        SAFE} modules.  One implementation module can implement several
2971        definition modules.  Opaque type implementations can be
2972        repeated in modules that import its definition, so implementation
2973        modules can collaborate.  The linker checks that all
2974        implementations are the same.
2975    }
2976}
2977
2978@misc{GCCExtensions,
2979    contributer = {a3moss@uwaterloo.ca},
2980    key         = {C Extensions},
2981    author      = {{C Extensions}},
2982    title       = {Extensions to the {C} Language Family},
2983    year        = 2014,
2984    howpublished= {\href{https://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/C-Extensions.html}{https://\-gcc.gnu.org/\-onlinedocs/\-gcc-4.7.2/\-gcc/\-C\-Extensions.html}},
2985}
2986
2987@inproceedings{BNRPascal,
2988    keywords    = {concurrency, rendezvous},
2989    contributer = {pabuhr@plg},
2990    author      = {R. Kamel and N. Gammage},
2991    title       = {Experience with Rendezvous},
2992    booktitle   = {Proceedings of the 1988 International Conference on Computer Languages},
2993    month       = oct,
2994    year        = 1988,
2995    pages       = {143-149}
2996}
2997
2998@inproceedings{Patwary10,
2999    keywords    = {union-find},
3000    contributer = {a3moss@uwaterloo.ca},
3001    author      = {Patwary, Md. Mostofa Ali and Blair, Jean and Manne, Fredrik},
3002    editor      = {Festa, Paola},
3003    title       = {Experiments on Union-Find Algorithms for the Disjoint-Set Data Structure},
3004    booktitle   = {Experimental Algorithms},
3005    year        = 2010,
3006    publisher   = {Springer Berlin Heidelberg},
3007    address     = {Berlin, Heidelberg},
3008    pages       = {411--423},
3009    isbn        = {978-3-642-13193-6}
3010}
3011
3012% F
3013
3014@inproceedings{Knudsen01,
3015    keywords    = {Beta, exception handling},
3016    contributer = {pabuhr@plg},
3017    author      = {J{\o}rgen Lindskov Knudsen},
3018    title       = {Fault Tolerance and Exception Handling in {BETA}},
3019    booktitle   = {Exception Handling},
3020    publisher   = {Springer},
3021    volume      = 2022,
3022    series      = {Lecture Notes in Computer Science},
3023    year        = 2001,
3024    pages       = {1-17}
3025}
3026
3027@article{Lamport87,
3028    keywords    = {software solutions, mutual exclusion, fast},
3029    contributer = {pabuhr@plg},
3030    author      = {Leslie Lamport},
3031    title       = {A Fast Mutual Exclusion Algorithm},
3032    journal     = tocs,
3033    volume      = 5,
3034    number      = 1,
3035    month       = jan,
3036    year        = {1987},
3037    pages       = {1-11},
3038    publisher   = {ACM},
3039    address     = {New York, NY, USA},
3040}
3041
3042@article{Hesselink17,
3043    keywords    = {concurrency, mutual exclusion, performance experiment, software solutions},
3044    title       = {Fast mutual exclusion by the {T}riangle algorithm},
3045    author      = {Wim H. Hesselink and Peter A. Buhr and David Dice},
3046    journal     = ccpe,
3047    volume      = 30,
3048    number      = 4,
3049    year        = 2018,
3050    month       = feb,
3051    publisher   = {John Wiley \& Sons},
3052    note        = {\href{https://doi.org/10.1002/cpe.4183}{https://\-doi.org/\-10.1002/\-cpe.4183}}
3053}
3054
3055@article{Yang95,
3056    keywords    = {software solutions, N-thread, mutual exclusions},
3057    contributer = {pabuhr@plg},
3058    author      = {Jae-Heon Yang and James H. Anderson},
3059    title       = {A Fast, Scalable Mutual Exclusion Algorithm},
3060    journal     = {Distributed Computing},
3061    publisher   = {Springer-Verlag},
3062    volume      = {9},
3063    number      = {1},
3064    year        = {1995},
3065    pages       = {51-60},
3066}
3067
3068@manual{WindowsFibers,
3069    keywords    = {threads, fibers},
3070    contributer = {pabuhr@plg},
3071    author      = {Windows},
3072    title       = {Fibers},
3073    organization= {Microsoft, Windows Development Center},
3074    address     = {\href{https://docs.microsoft.com/en-us/windows/desktop/ProcThread/fibers}{https://\-docs.microsoft.com/\-en-us/\-windows/\-desktop/\-ProcThread/\-fibers}},
3075    year        = 2018,
3076}
3077
3078@inproceedings{F-bound,
3079    keywords    = {},
3080    contributer = {gjditchfield@plg},
3081    author      = {Peter Canning and William Cook and Walter Hill and Walter Olthoff and John C. Mitchell},
3082    title       = {F-Bounded Polymorphism for Object-Oriented Programming},
3083    booktitle   = {Fourth International Conference on Functional Programming Languages and Computer Architecture},
3084    year        = 1989,
3085    month       = sep,
3086    pages       = {273-280}
3087}
3088
3089@mastersthesis{Wasik08,
3090    author      = {Ayelet Wasik},
3091    title       = {Features of a Multi-Threaded Memory Allocator},
3092    school      = {University of Waterloo},
3093    year        = 2008,
3094    month       = jan,
3095    address     = {Waterloo, Ontario, Canada, N2L 3G1},
3096    note        = {\textsf{http://uwspace.uwaterloo.ca/\-bitstream/\-10012/\-3501/\-1/\-Thesis.pdf}},
3097}
3098
3099@article{Holzmann94,
3100    keywords    = {semaphore, flags},
3101    contributer = {pabuhr@plg},
3102    author      = {Gerard J. Holzmann and Bj\"{o}rn Pehrson},
3103    title       = {The First Data Networks},
3104    journal     = {Scientific American},
3105    month       = jan,
3106    year        = 1994,
3107    volume      = 12,
3108    number      = 1,
3109    pages       = {124-129},
3110}
3111
3112@article{Bohm66,
3113    keywords    = {goto, structured programming},
3114    contributer = {pabuhr@plg},
3115    author      = {C. B\"{o}hm and G. Jacopini},
3116    title       = {Flow diagrams, Turing Machines and Languages with only two Formation Rules},
3117    journal     = cacm,
3118    month       = may,
3119    year        = 1966,
3120    volume      = 9,
3121    number      = 5,
3122    pages       = {366-371},
3123}
3124
3125@manual{Folly,
3126    keywords    = {Folly},
3127    contributer = {pabuhr@plg},
3128    author      = {Folly},
3129    title       = {Facebook Open-source Library},
3130    organization= {Facebook},
3131    address     = {\href{https://github.com/facebook/folly}{https://\-github.com/\-facebook/\-folly}},
3132    year        = 2018,
3133}
3134
3135@manual{Fortran95,
3136    keywords    = {Fortran 95},
3137    contributer = {pabuhr@plg},
3138    key         = {Fortran95},
3139    title       = {Fortran 95 Standard, ISO/IEC 1539},
3140    organization= {Unicomp, Inc.},
3141    address     = {7660 E. Broadway, Tucson, Arizona, U.S.A, 85710},
3142    month       = jan,
3143    year        = 1997,
3144}
3145
3146@manual{Fortran08,
3147    keywords    = {ISO/IEC Fortran 08},
3148    contributer = {pabuhr@plg},
3149    author      = {Fortran08},
3150    title       = {Programming Languages -- {Fortran} Part 1:Base Language ISO/IEC 1539-1:2010},
3151    edition     = {3rd},
3152    publisher   = {International Standard Organization},
3153    address     = {\href{https://www.iso.org/standard/50459.html}{https://\-www.iso.org/\-standard/\-50459.html}},
3154    year        = 2010,
3155}
3156
3157@manual{Fortran18,
3158    keywords    = {ISO/IEC Fortran 10},
3159    contributer = {pabuhr@plg},
3160    author      = {Fortran18},
3161    title       = {Programming Languages -- {Fortran} Part 1:Base Language ISO/IEC 1539-1:2018},
3162    edition     = {4rd},
3163    publisher   = {International Standard Organization},
3164    address     = {\href{https://www.iso.org/standard/72320.html}{https://\-www.iso.org/\-standard/\-72320.html}},
3165    year        = 2018,
3166}
3167
3168@book{Andrews00:book,
3169    keywords    = {concurrency},
3170    contributer = {pabuhr@plg},
3171    author      = {Gregory R. Andrews},
3172    title       = {Foundations of Multithreaded, Parallel and Distributed Programming},
3173    publisher   = {Addison--Wesley},
3174    year        = 2000,
3175}
3176
3177@article{Agha89,
3178    keywords    = {actors, concurrency},
3179    contributer = {pabuhr@plg},
3180    author      = {Gul A. Agha},
3181    title       = {Foundational Issues in Concurrent Computing},
3182    journal     = sigplan,
3183    month       = apr,
3184    year        = 1989,
3185    volume      = 24,
3186    number      = 4,
3187    pages       = {60-65},
3188    note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming,
3189                   Sept. 26--27, 1988, San Diego, California, U.S.A},
3190}
3191
3192@article{ool,
3193    keywords    = {},
3194    contributer = {gjditchfield@plg},
3195    author      = {Douglas T. Ross},
3196    title       = {Toward Foundations for the Understanding of Type},
3197    journal     = sigplan,
3198    year        = 1976,
3199    volume      = 11,
3200    pages       = {63-65},
3201    note        = {Conference on Data: Abstraction, Definition and Structure},
3202    summary     = {
3203        Possibly the first use (without definition, alas) of the phrase
3204        "object oriented language".  Metaphysical to the point of incoherence.
3205    }
3206}
3207
3208@article{frames,
3209    keywords    = {frames},
3210    contributer = {gjditchfield@plg},
3211    author      = {Paul G. Basset},
3212    title       = {Frame-Based Software Engineering},
3213    journal     = {IEEE Software},
3214    month       = jul, year = 1987,
3215    volume      = 4, number = 4, pages = {9-16}
3216}
3217
3218@misc{Sutter05c,
3219    contributer = {pabuhr@plg},
3220    title       = {The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software},
3221    author      = {Herb Sutter},
3222    howpublished= {\url{http://www.gotw.ca/publications/concurrency-ddj.htm}},
3223    year        = {2005},
3224    note        = {originally Dr. Dobb's Journal 30(3)},
3225}
3226
3227@article{Sutter05,
3228    keywords    = {concurrency, C++},
3229    contributer = {pabuhr@plg},
3230    author      = {Herb Sutter},
3231    title       = {A Fundamental Turn Toward Concurrency in Software},
3232    journal     = {Dr. Dobb's Journal : Software Tools for the Professional Programmer},
3233    month       = mar,
3234    year        = 2005,
3235    volume      = 30,
3236    number      = 3,
3237    pages       = {16-22},
3238}
3239
3240@inproceedings{Dony01,
3241    keywords    = {Smalltalk, exception handling},
3242    contributer = {pabuhr@plg},
3243    author      = {Chistophe Dony},
3244    title       = {A Fully Object-Oriented Exception Handling System: Rationale and Smalltalk Implementation},
3245    booktitle   = {Exception Handling},
3246    publisher   = {Springer},
3247    volume      = 2022,
3248    series      = {Lecture Notes in Computer Science},
3249    year        = 2001,
3250    pages       = {18-38}
3251}
3252
3253@misc{FW,
3254    key         = {FW},
3255    contributer = {gjditchfield@plg},
3256    title       = {Funk \& Wagnalls Standard Desk Dictionary},
3257    year        = 1980
3258}
3259
3260@book{Knuth73V1,
3261    contributer = {pabuhr@plg},
3262    author      = {Donald E. Knuth},
3263    title       = {Fundamental Algorithms},
3264    series      = {The Art of Computer Programming},
3265    publisher   = {Addison-Wesley},
3266    address     = {Boston},
3267    year        = 1973,
3268    volume      = 1,
3269    edition     = {2nd},
3270}
3271
3272@inproceedings{Strachey,
3273    keywords    = {polymorphism},
3274    contributer = {gjditchfield@plg},
3275    author      = {C. Strachey},
3276    title       = {Fundamental Concepts in Programming Languages},
3277    booktitle   = {Lecture Notes for the International Summer School in Computer Programming},
3278    year        = 1967,
3279    month       = aug,
3280    address     = {Copenhagen},
3281    comment     = {
3282        Defines ad-hoc and parametric polymorphism.
3283    }
3284}
3285
3286@article{Eisenberg72,
3287    keywords    = {concurrency, N-Process solution, O(N)},
3288    contributer = {pabuhr@plg},
3289    author      = {Murray A. Eisenberg and Michael R. McGuire},
3290    title       = {Further Comments on {D}ijkstra's Concurrent Programming Control Problem},
3291    journal     = cacm,
3292    month       = nov,
3293    year        = 1972,
3294    volume      = 15,
3295    number      = 11,
3296    pages       = {999},
3297}
3298
3299% G
3300
3301@article{Boehm88,
3302    keywords    = {conservative garbage collection, C},
3303    contributer = {gjditchfield@plg},
3304    author      = {Hans-Juergen Boehm and Mark Weiser},
3305    title       = {Garbage Collection in an Uncooperative Environment},
3306    journal     = spe,
3307    month       = sep,
3308    year        = 1988,
3309    volume      = 18,
3310    number      = 9,
3311    pages       = {807-820}
3312}
3313
3314@manual{gcc,
3315    keywords    = {},
3316    contributer = {gjditchfield@plg},
3317    title       = {GCC},
3318    author      = {Richard M. Stallman},
3319    organization= {Free Software Foundation},
3320    address     = {Cambridge}
3321}
3322
3323@article{doUpon,
3324    keywords    = {formal verification, axiomatic semantics, control structures},
3325    contributer = {gjditchfield@plg},
3326    author      = {Ed Anson},
3327    title       = {A Generalized Iterative Construct and Its Semantics},
3328    journal     = toplas,
3329    volume      = {9},    number = {4},
3330    pages       = {567-581},
3331    month       = oct, year = 1987,
3332    comment     = {
3333        \begin{verbatim}
3334            do
3335                   P1 -> L1
3336               [] P2 -> L2
3337            ...
3338               [] Pm -> Lm
3339            upon
3340                   Q1 -> M1
3341               [] Q2 -> M2
3342            ...
3343               [] qn -> mn
3344            od
3345        \end{verbatim}
3346
3347        If there is an i such that Qi is true, execute Mi and terminate.
3348        Otherwise, if there is an i such that Pi is true, execute Li and
3349        repeat the loop.  Otherwise, fail.
3350    }
3351}
3352
3353@unpublished{Bilson,
3354    keywords    = {generic programming, generics, polymorphism},
3355    contributor = {a3moss@plg},
3356    author      = {Richard C. Bilson and Glen Ditchfield and Peter A. Buhr},
3357    title       = {Generic Programming with Inferred Models},
3358}
3359
3360@article{Haskell,
3361    keywords    = {lazy evaluation, type class},
3362    contributer = {pabuhr},
3363    author      = {Paul Hudak and Joseph H. Fasel},
3364    title       = {A Gentle Introduction to Haskell},
3365    journal     = sigplan,
3366    volume      = 27,
3367    number      = 5,
3368    month       = may,
3369    year        = 1992,
3370    pages       = {T1-53},
3371}
3372
3373@manual{GMP,
3374    keywords    = {GMP arbitrary-precision library},
3375    contributer = {pabuhr@plg},
3376    key         = {GMP},
3377    title       = {{GNU} Multiple Precision Arithmetic Library},
3378    address     = {GNU},
3379    year        = 2016,
3380    note        = {\href{https://gmplib.org}{https://\-gmplib.org}},
3381}
3382
3383@manual{Go,
3384    keywords    = {Go programming language},
3385    contributer = {pabuhr@plg},
3386    author      = {Robert Griesemer and Rob Pike and Ken Thompson},
3387    title       = {{Go} Programming Language},
3388    organization= {Google},
3389    year        = 2009,
3390    note        = {\href{http://golang.org/ref/spec}{http://\-golang.org/\-ref/\-spec}},
3391}
3392
3393@article{Dijkstra68a,
3394    keywords    = {goto},
3395    contributer = {pabuhr@plg},
3396    author      = {Edsger W. Dijkstra},
3397    title       = {Go To Statement Considered Harmful},
3398    journal     = cacm,
3399    month       = mar,
3400    year        = 1968,
3401    volume      = 11,
3402    number      = 3,
3403    pages       = {147-148},
3404    note        = {Reprinted in \cite{Yourdon79} pp. 29--36.},
3405}
3406
3407@misc{GObject,
3408    keywords    = {GObject},
3409    contributor = {a3moss@uwaterloo.ca},
3410    key         = {GObject},
3411    organization= {The {GNOME} Project},
3412    title       = {{GO}bject Reference Manual},
3413    year        = 2014,
3414    howpublished= {https://developer.gnome.org/gobject/stable/},
3415}
3416
3417@article{Choi91,
3418    keywords    = {contra-variance, functions},
3419    contributer = {pabuhr@plg},
3420    author      = {Injun Choi and Michael V. Mannino},
3421    title       = {Graph Interpretation of Methods: A Unifying Framework for Polymorphism in Object-Oriented Programming},
3422    journal     = {OOPS Messenger},
3423    volume      = 2,
3424    number      = 1,
3425    month       = jan,
3426    year        = 1991,
3427    pages       = {38-54},
3428}
3429
3430@misc{GNU-C,
3431    keywords    = {C, ANSI C},
3432    contributer = {pabuhr@plg},
3433    author      = {Richard Stallman},
3434    title       = {The Free Software Foundation's Gnu {C} Compiler},
3435    howpublished= {Free Software Foundation, 1000 Mass Ave., Cambridge, MA, U.S.A., 02138},
3436    year        = 1989,
3437}
3438
3439@article{Dijkstra:green,
3440    keywords    = {ada},
3441    contributer = {gjditchfield@plg},
3442    author      = {Edsger W. Dijkstra},
3443    title       = {On the GREEN Language submitted to the DoD},
3444    journal     = sigplan,
3445    year        = 1978,
3446    month       = oct,
3447    volume      = 13,
3448    number      = 10,
3449    pages       = {16-21}
3450}
3451
3452@inproceedings{Miller02,
3453    keywords    = {exception handling},
3454    contributer = {pabuhr@plg},
3455    author      = {Robert Miller and Anand Tripathi},
3456    title       = {The Guardian Model for Exception Handling in Distributed Systems},
3457    booktitle   = {21st Symposium on Reliable Distributed Systems},
3458    organization= {IEEE},
3459    address     = {Suita, Japan},
3460    year        = 2002,
3461    month       = oct,
3462    pages       = {304-313}
3463}
3464
3465@phdthesis{Chen09,
3466    author      = {Jun Chen},
3467    title       = {Guided Testing of Concurrent Programs Using Value Schedules},
3468    school      = {University of Waterloo},
3469    year        = 2009,
3470    month       = sep,
3471    address     = {Waterloo, Ontario, Canada, N2L 3G1},
3472    note        = {\textsf{http://uwspace.uwaterloo.ca/bitstream/\-10012/\-4735/\-1/\-Chen-Jun.pdf}},
3473}
3474
3475@misc{GNU-C++,
3476    keywords    = {C++, GNU C},
3477    contributer = {pabuhr@plg},
3478    author      = {Michael D. Tiemann},
3479    title       = {User's Guide to GNU {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
3480    howpublished= {Free Software Foundation, 1000 Mass Ave., Cambridge, MA, U.S.A., 02138},
3481    month       = mar,
3482    year        = 1990,
3483}
3484
3485% H
3486
3487@manual{Haskell10,
3488    keywords    = {Haskell},
3489    contributer = {pabuhr@plg},
3490    author      = {Haskell},
3491    title       = {Haskell 2010 Language Report},
3492    edition     = {{S}imon {M}arlow},
3493    year        = 2010,
3494    note        = {\href{https://haskell.org/definition/haskell2010.pdf}{https://\-haskell.org/\-definition/\-haskell2010.pdf}},
3495}
3496
3497@article{Michael04a,
3498    keywords    = {Lock-free, synchronization, concurrent programming, memory management, multiprogramming, dynamic data structures},
3499    author      = {Maged M. Michael},
3500    title       = {Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects},
3501    journal     = ieeepds,
3502    volume      = 15,
3503    number      = 6,
3504    month       = jun,
3505    year        = 2004,
3506    pages       = {491-504},
3507    publisher   = {IEEE Press},
3508    address     = {Piscataway, NJ, USA},
3509}
3510
3511@techreport{Hermes90,
3512    keywords    = {processes, distributed computing},
3513    contributer = {pabuhr@plg},
3514    author      = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini}, 
3515    title       = {Hermes: A Language for Distributed Computing},
3516    institution = {IBM T. J. Watson Research Center},
3517    address     = {Yorktown Heights, New York, U.S.A., 10598},
3518    month       = oct,
3519    year        = 1990,
3520}
3521
3522@book{Hermes91,
3523    keywords    = {processes, distributed computing},
3524    contributer = {pabuhr@plg},
3525    author      = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini}, 
3526    title       = {Hermes: A Language for Distributed Computing},
3527    publisher   = {Prentice-Hall},
3528    address     = {Englewood Cliffs},
3529    series      = {Innovative Technology},
3530    year        = 1991,
3531}
3532
3533@article{katzenelson83b,
3534    contributer = {gjditchfield@plg},
3535    author      = "Jacob Katzenelsen",
3536    title       = "Higher Level Programming and Data Abstraction---A Case Study using Enhanced C",
3537    journal     = spe,
3538    year        = 1983,
3539    volume      = 13,
3540    number      = 7,
3541    pages       = {577-596},
3542    month       = jul
3543}
3544
3545@techreport{Hoare73,
3546    keywords    = {},
3547    contributer = {gjditchfield@plg},
3548    author      = {C. A. R. Hoare},
3549    title       = {Hints on Programming Language Design},
3550    institution = {Stanford University Computer Science Department},
3551    year        = 1973,
3552    month       = dec,
3553    number      = {CS-73-403},
3554    note        = {Reprinted in \cite{pldesign}.}
3555}
3556
3557@article{Dijkstra71,
3558    keywords    = {monitor, secretary},
3559    contributer = {pabuhr@plg},
3560    author      = {E. W. Dijkstra},
3561    title       = {Hierarchical Ordering of Sequential Processes},
3562    journal     = acta,
3563    volume      = 1,
3564    pages       = {115-138},
3565    year        = 1971,
3566}
3567
3568@article{Hesselink17b,
3569    keywords    = {concurrency, mutual exclusion, performance experiment, software solutions},
3570    title       = {High-Contention Mutual Exclusion by Elevator Algorithms},
3571    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
3572    journal     = ccpe,
3573    volume      = 30,
3574    number      = 18,
3575    year        = 2018,
3576    month       = sep,
3577    publisher   = {John Wiley \& Sons},
3578    note        = {\href{https://doi.org/10.1002/cpe.4475}{https://\-doi.org/\-10.1002/\-cpe.4475}},
3579}
3580
3581@article{Buhr15a,
3582    keywords    = {software solution, mutual exclusion, performance experiment},
3583    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
3584    title       = {High-Performance {$N$}-Thread Software Solutions for Mutual Exclusion},
3585    journal     = ccpe,
3586    volume      = 27,
3587    number      = 3,
3588    pages       = {651-701},
3589    month       = mar,
3590    year        = 2015,
3591}
3592
3593@article{Ackermann28,
3594    keywords    = {recursion, Ackermann function},
3595    contributer = {pabuhr@plg},
3596    author      = {Wilhelm Ackermann},
3597    title       = {Zum Hilbertschen Aufbau der reellen Zahlen},
3598    publisher   = {Springer},
3599    journal     = mathann,
3600    number      = 1,
3601    volume      = 99,
3602    pages       = {118-133},
3603    month       = dec,
3604    year        = 1928,
3605}
3606
3607@inproceedings{typeclass,
3608    keywords    = {Hindley/Miller type systems, Haskell},
3609    contributer = {gjditchfield@plg},
3610    author      = {Philip Wadler and Stephen Blott},
3611    title       = {How to make {\em Ad-Hoc} Polymorphism Less {\em Ad-Hoc}},
3612    booktitle   = popl,
3613    year        = 1989,
3614    pages       = {60-76},
3615    organization= {Association for Computing Machinery}
3616}
3617
3618% I
3619
3620@book{IBM370,
3621    keywords    = {370, IBM},
3622    contributer = {pabuhr@plg},
3623    key         = {IBM370},
3624    title       = {{IBM} System/370 Principles of Operation},
3625    publisher   = {IBM},
3626    number      = {GA22-7000-8},
3627    month       = oct,
3628    year        = 1981,
3629    edition     = {9th}
3630}
3631
3632@book{Icon,
3633    keywords    = {Icon},
3634    contributer = {pabuhr@plg},
3635    author      = {Ralph E. Griswold and Madge T. Griswold},
3636    title       = {The Icon Programming Language},
3637    publisher   = {Prentice-Hall},
3638    address     = {Englewood Cliffs},
3639    year        = 1983,
3640}
3641
3642@inproceedings{Valois94,
3643    keywords    = {lock free, queue},
3644    contributer = {pabuhr@plg},
3645    author      = {John D. Valois},
3646    title       = {Implementing Lock-Free Queues},
3647    booktitle   = {Seventh International Conference on Parallel and Distributed Computing Systems},
3648    address     = {Las Vegas, Nevada, U.S.A.},
3649    year        = {1994},
3650    pages       = {64-69},
3651}
3652
3653@article{Hehner81,
3654    keywords    = {concurrency, critical section, bakery algorithm},
3655    contributer = {pabuhr@plg},
3656    author      = {Eric C. R. Hehner and R. K. Shyamasundar},
3657    title       = {An Implementation of {P} and {V}},
3658    journal     = ipl,
3659    year        = 1981,
3660    month       = aug,
3661    volume      = 12,
3662    number      = 4,
3663    pages       = {196-198},
3664}
3665
3666@incollection{Steenkiste91,
3667    keywords    = {lisp},
3668    contributer = {gjditchfield@plg},
3669    author      = {Peter A. Steenkiste},
3670    title       = {The Implementation of Tags and Run-Time Checking},
3671    booktitle   = {Topics in Advanced Language Implementation},
3672    pages       = {3-24},
3673    year        = 1991,
3674    editor      = {Peter Lee},
3675    chapter     = {1},
3676    publisher   = {The MIT Press}
3677}
3678
3679@techreport{Roberts89,
3680    keywords    = {},
3681    contributer = {pabuhr@plg},
3682    author      = {Eric S. Roberts},
3683    title       = {Implementing Exceptions in {C}},
3684    institution = {Digital Systems Research Center},
3685    address     = {130 Lytton Avenue, Palo Alto, California, 94301},
3686    number      = {40},
3687    month       = mar,
3688    year        = 1989,
3689}
3690
3691@mastersthesis{Bilson03,
3692    keywords    = {Cforall, parametric polymorphism, overloading},
3693    contributer = {pabuhr@plg},
3694    author      = {Richard C. Bilson},
3695    title       = {Implementing Overloading and Polymorphism in \textsf{C}$\mathbf{\forall}$},
3696    school      = {School of Computer Science, University of Waterloo},
3697    year        = 2003,
3698    address     = {Waterloo, Ontario, Canada, N2L 3G1},
3699    note        = {\href{http://plg.uwaterloo.ca/theses/BilsonThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-BilsonThesis.pdf}},
3700}
3701
3702@article{Buhr05b,
3703    keywords    = {monitor, automatic signal, implicit signal},
3704    contributer = {pabuhr@plg},
3705    author      = {Peter A. Buhr and Ashif S. Harji},
3706    title       = {Implicit-signal monitors},
3707    journal     = toplas,
3708    volume      = 27,
3709    number      = 6,
3710    month       = nov,
3711    year        = 2005,
3712    issn        = {0164-0925},
3713    pages       = {1270--1343},
3714    publisher   = {ACM Press},
3715    address     = {New York, NY, USA},
3716}
3717
3718@article{Galler64,
3719    keywords    = {union-find, original},
3720    contributer = {a3moss@uwaterloo.ca},
3721    title       = {An improved equivalence algorithm},
3722    author      = {Galler, Bernard A and Fisher, Michael J},
3723    journal     = {Communications of the ACM},
3724    volume      = {7},
3725    number      = {5},
3726    pages       = {301--303},
3727    year        = {1964},
3728    publisher   = {ACM}
3729}
3730
3731@phdthesis{Barghi18,
3732    keywords    = {concurrency, user threads, actors},
3733    contributer = {pabuhr@plg},
3734    author      = {Saman Barghi},
3735    title       = {Improving the Performance of User-level Runtime Systems for Concurrent Applications},
3736    school      = {School of Computer Science, University of Waterloo},
3737    year        = 2018,
3738    month       = sep,
3739    optaddress  = {Waterloo, Ontario, Canada, N2L 3G1},
3740    note        = {\href{https://uwspace.uwaterloo.ca/handle/10012/13935}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-13935}},
3741}
3742
3743@article{Baker77,
3744    author      = {Henry C. Baker, Jr. and Carl Hewitt},
3745    title       = {The Incremental Garbage Collection of Processes},
3746    journal     = {SIGART Bulletin},
3747    publisher   = {ACM},
3748    address     = {New York, NY, USA},
3749    month       = aug,
3750    year        = 1977,
3751    pages       = {55-59},
3752    issn        = {0163-5719},
3753}
3754
3755@book{Algol68,
3756    keywords    = {Algol68},
3757    contributer = {pabuhr@plg},
3758    author      = {C. H. Lindsey and S. G. van der Meulen},
3759    title       = {Informal Introduction to ALGOL 68},
3760    publisher   = {North-Holland},
3761    address     = {London},
3762    year        = 1977,
3763}
3764
3765@inproceedings{Cook90,
3766    keywords    = {f-bounded polymorhpism, lambda calculus},
3767    contributer = {gjditchfield@plg},
3768    author      = {William R. Cook and Walter L. Hill and Peter S. Canning},
3769    title       = {Inheritance is Not Subtyping},
3770    booktitle   = popl,
3771    year        = 1990,
3772    pages       = {125-135},
3773    organization= {Association for Computing Machinery},
3774    abstract    = {
3775        In typed object-oriented languages the subtype relation is
3776        typically based on the inheritance hierarchy.  This approach,
3777        however, leads either to insecure type-systems or to restrictions
3778        on inheritance that make it less flexible than untyped Smalltalk
3779        inheritance.  We present a new typed model of inheritance that
3780        allows more of the flexibility of Smalltalk inheritance within a
3781        statically-typed system.  Significant features of our analysis are
3782        the introduction of polymorphism into the typing of inheritance and
3783        the uniform application of inheritance to objects, classes and
3784        types.  The resulting notion of {\em type inheritance} allows us to
3785        show that the type of an inherited object is an inherited type but
3786        not always a subtype.
3787    }
3788}
3789
3790@inproceedings{MMR92,
3791    keywords    = {},
3792    contributer = {gjditchfield@plg},
3793    author      = {Robert E. Minnear and Patrick A. Muckelbauer and Vincent F. Russo},
3794    title       = {Integrating the {Sun Microsystems} {XDR/RPC} Protocols
3795                  into the {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Stream Model},
3796    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference Proceedings},
3797    year        = 1992,
3798    month       = aug,
3799    pages       = {295-312},
3800    organization= {USENIX Association},
3801    address     = {2590 Ninth Street, Suite 215, Berkeley, CA 94710},
3802    abstract    = {
3803        This paper reports our experiences integrating the Sun Microsystems
3804        RPC and XDR protocol specifications into the C++ model of
3805        input/output streams.  As part of the {\it Renaissance} operating
3806        system project, we wish to construct network servers and clients,
3807        written in C++, which interoperate with existing UNIX clients
3808        and servers.  We discovered that, although it would be possible to
3809        re-implement the procedural based XDR/RPC implementation
3810        distributed by Sun Microsystems in C++, it is far cleaner to
3811        integrate the protocols with the C++ I/O stream model.  We
3812        feel the resulting model provides a cleaner way of implementing RPC
3813        clients and servers without losing functionality or compatibility
3814        with existing clients and servers.
3815    }
3816}
3817
3818@inproceedings{Zuo08,
3819    keywords    = {shared memory systems,intelligent multiport memory,multiprocessors systems,shared memory system},
3820    author      = {Wang Zuo and Wang Zuo and Li Jiaxing},
3821    title       = {An Intelligent Multi-Port Memory},
3822    booktitle   = {Symposium on Intelligent Information Technology Application Workshops, Shanghai, China},
3823    month       = dec,
3824    year        = 2008,
3825    pages       = {251-254},
3826    publisher   = {IEEE Computer Society},
3827    address     = {Los Alamitos, CA, USA},
3828}
3829
3830@book{Francez96,
3831    keywords    = {await, formal},
3832    contributer = {pabuhr@plg},
3833    author      = {Nissim Francez and Ira R. Forman},
3834    title       = {Interacting Processes: A Multiparty Approach to Coordinated Distributed Programming},
3835    publisher   = {Addison-Wesley},
3836    address     = {Boston},
3837    series      = {ACM Press Books},
3838    year        = 1996,
3839}
3840
3841@article{Labreche90,
3842    keywords    = {concurrency, C++},
3843    contributer = {pabuhr@plg},
3844    author      = {Pierre Labr{\`{e}}che},
3845    title       = {Interactors: A Real-Time Executive with Multiparty Interactions in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
3846    journal     = sigplan,
3847    volume      = 25,
3848    number      = 4,
3849    month       = apr,
3850    year        = 1990,
3851    pages       = {20-32},
3852}
3853
3854@inproceedings{interfaces,
3855    keywords    = {parameterized interfaces, classes, recursion/inheritance},
3856    contributer = {gjditchfield@plg},
3857    author      = {Peter S. Canning and William R. Cook and Walter L. Hill and
3858        Walter G. Olthoff},
3859    title       = {Interfaces for Strongly-Typed Object-Oriented Programming},
3860    crossref    = "OOPSLA89",
3861    pages       = {457-467},
3862    abstract    = {
3863        This paper develops a system of explicit interfaces for
3864        object-oriented programming.  The system provides the benefits of
3865        module interfaces found in languages like Ada and Modula-2 while
3866        preserving the expressiveness that gives untyped object-oriented
3867        languages like Smalltalk their flexibility.  Interfaces are
3868        interpreted as polymorphic types to make the system sufficiently
3869        powerful.  We use interfaces to analyze the properties of
3870        inheritance, and identify three distinct kinds of inheritance in
3871        object-oriented programming, corresponding to objects, classes, and
3872        interfaces, respectively.  Object interfaces clarify the
3873        distinction between interface containment and inheritance and give
3874        insight into limitations caused by equating the notions of type and
3875        class in many typed object-oriented programming languages.
3876        Interfaces also have practical consequences for design,
3877        specification, and maintenance of object-oriented systems.
3878    }
3879}
3880
3881@phdthesis{Girard72,
3882    keywords    = {universal quantification},
3883    contributer = {gjditchfield@plg},
3884    author      = {J.-Y. Girard},
3885    title       = {Interpretation fonctionelle et elimination des coupures de
3886        l'arithmetique d'ordre superieur},
3887    school      = {Universite Paris},
3888    year        = {1972}
3889}
3890
3891@article{Karaorman93,
3892    keywords    = {Eiffel, concurrency libraries},
3893    contributer = {pabuhr@plg},
3894    author      = {Murat Karaorman and John Bruno},
3895    title       = {Introducing Concurrency to a Sequential Language},
3896    journal     = cacm,
3897    month       = sep,
3898    year        = 1993,
3899    volume      = 36,
3900    number      = 9,
3901    pages       = {103-116}
3902}
3903
3904@book{Corman92,
3905    keywords    = {PRAM, parallel algorithms},
3906    contributer = {pabuhr@plg},
3907    author      = {Thomas H. Cormen and Charles E. Leiserson and Ronald L. Rivest},
3908    title       = {Introduction to Algorithms},
3909    publisher   = {MIT Press/McGraw-Hill},
3910    address     = {Cambridge},
3911    series      = {Electrical Engineering and Computer Science Series},
3912    year        = 1992,
3913}
3914
3915@book{Hopcroft79,
3916    keywords    = {finite-state machine, push-dowm automata},
3917    contributer = {pabuhr@plg},
3918    author      = {John E. Hopcroft and Jeffrey D. Ullman},
3919    title       = {Introduction to Automata Theory, Languages and Computation},
3920    publisher   = {Addison-Wesley},
3921    address     = {Boston},
3922    year        = 1979,
3923}
3924
3925@techreport{walker87,
3926    keywords    = {CCS},
3927    contributer = {gjditchfield@plg},
3928    author      = {David Walker},
3929    title       = {Introduction to a Calculus of Communicating Systems},
3930    institution = {Laboratory for Foundations of Computer Science},
3931    year        = 1987,
3932    address     = {Department of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ},
3933    month       = jun,
3934    number      = {ECS-LFCS-87-22},
3935}
3936
3937@article{katzenelson83a,
3938    author      = {Jacob Katzenelson},
3939    title       = {Introduction to Enhanced C (EC)},
3940    journal     = spe,
3941    volume      = 13,
3942    number      = 7,
3943    year        = 1983,
3944    month       = jul,
3945    pages       = {551-576},
3946}
3947
3948@book{Deitel90,
3949    keywords    = {concurrency, operating systems},
3950    contributer = {pabuhr@plg},
3951    author      = {Harvey M. Deitel},
3952    title       = {An Introduction to Operating Systems},
3953    publisher   = {Addison-Wesley},
3954    address     = {Boston},
3955    year        = 1990,
3956    edition     = {2nd},
3957}
3958
3959@techreport{Birrell89,
3960    keywords    = {threads, monitors},
3961    contributer = {pabuhr@plg},
3962    author      = {Andrew D. Birrell},
3963    title       = {An Introduction to Programming with Threads},
3964    institution = {Digital Systems Research Center},
3965    address     = {130 Lytton Avenue, Palo Alto, California, 94301},
3966    number      = {35},
3967    month       = jan,
3968    year        = 1989,
3969    note        = {{\textsf{http://www.hpl.hp.com/\-techreports/\-Compaq-DEC/\-SRC-RR-35.html}}},
3970
3971}
3972
3973@article{t/o,
3974    keywords    = {Trellis/Owl},
3975    contributer = {gjditchfield@plg},
3976    author      = {Craig Schaffert and Topher Cooper and Bruce Bullis and Mike Kilian and Carrie Wilpot},
3977    title       = {An Introduction to Trellis/Owl},
3978    journal     = sigplan,
3979    volume      = 21,
3980    number      = 11,
3981    year        = 1986,
3982    month       = nov,
3983    pages       = {9-16},
3984}
3985
3986@inproceedings{Pharr12,
3987    title       = {ispc: A {SPMD} compiler for high-performance CPU programming},
3988    author      = {Pharr, Matt and Mark, William R},
3989    booktitle   = {Innovative Parallel Computing (InPar), 2012},
3990    pages       = {1--13},
3991    year        = {2012},
3992    month       = may,
3993    address     = {San Jose, CA, USA},
3994    publisher   = {IEEE},
3995}
3996
3997@inproceedings{DeLozier13,
3998    keywords    = {C++, local pointers, memory safety, type-safety},
3999    author      = {DeLozier, Christian and Eisenberg, Richard and Nagarakatte, Santosh and Osera, Peter-Michael and Martin, Milo M.K. and Zdancewic, Steve},
4000    title       = {{I}ronclad {C++}: A Library-augmented Type-safe Subset of {C++}},
4001    booktitle   = {Proceedings of the 2013 ACM SIGPLAN International Conference on Object Oriented Programming Systems Languages \& Applications},
4002    series      = {OOPSLA'13},
4003    year        = {2013},
4004    address     = {Indianapolis, Indiana, USA},
4005    pages       = {287-304},
4006    publisher   = {ACM},
4007}
4008
4009@inproceedings{Hibbard77,
4010    keywords    = {algol-68, concurrency},
4011    contributer = {pabuhr@plg},
4012    author      = {Peter G. Hibbard and P. Knueven and B. W. Leverett},
4013    title       = {Issues in the Efficient Implementation and Use of Multiprocessing in {Algol} 68},
4014    booktitle   = {Proceedings of the 5th Annual iii Conference},
4015    address     = {Guidel, France},
4016    month       = may,
4017    year        = 1977,
4018    pages       = {203-221}
4019}
4020
4021@inproceedings{Miller97,
4022    keywords    = {exception handling, software-engineering},
4023    contributer = {pabuhr@plg},
4024    author      = {Robert Miller and Anand Tripathi},
4025    title       = {Issues with Exception Hnadling in Object-Oriented Systems},
4026    booktitle   = {ECOOP'97},
4027    publisher   = {Springer},
4028    volume      = 1241,
4029    series      = {Lecture Notes in Computer Science},
4030    year        = 1997,
4031    pages       = {85-103}
4032}
4033   
4034@article{Murer96,
4035    keywords    = {interators, generators, cursors},
4036    contributer = {pabuhr@plg},
4037    author      = {Stephan Murer and Stephen Omohundro and David Stoutamire and Clemens Szyperski},
4038    title       = {Iteration Abstraction in Sather},
4039    journal     = toplas,
4040    month       = jan,
4041    year        = 1996,
4042    volume      = 18,
4043    number      = 1,
4044    pages       = {1-15},
4045}
4046
4047% J
4048                 
4049@book{Java,
4050    keywords    = {Java},
4051    contributer = {pabuhr@plg},
4052    author      = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha},
4053    title       = {The {Java} Language Specification},
4054    publisher   = {Addison-Wesley},
4055    address     = {Reading},
4056    year        = 2000,
4057    edition     = {2nd},
4058}
4059
4060@manual{Java8,
4061    keywords    = {Java SE 8},
4062    contributer = {pabuhr@plg},
4063    author      = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha and Alex Buckley},
4064    title       = {{Java} Language Specification},
4065    publisher   = {Oracle},
4066    year        = 2015,
4067    edition     = {{J}ava {SE} 8},
4068}
4069
4070@manual{Java11,
4071    keywords    = {Java SE 11},
4072    contributer = {pabuhr@plg},
4073    author      = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha and Alex Buckley and Daniel Smith},
4074    title       = {{Java} Language Specification},
4075    publisher   = {Oracle},
4076    month       = sep,
4077    year        = 2018,
4078    edition     = {{J}ava {SE} 11},
4079}
4080
4081@manual{JDK1.1,
4082    keywords    = {JDK 1.1},
4083    contributer = {pabuhr@plg},
4084    author      = {{Multithreading Models}},
4085    title       = {JDK 1.1 for Solaris Developer's Guide},
4086    publisher   = {Oracle},
4087    address     = {\href{https://docs.oracle.com/cd/E19455-01/806-3461/6jck06gqk/index.html#ch2mt-41}{https://\-docs.oracle.com/\-cd/\-E19455-01/\-806-3461/\-6jck06gqk/\-index.html\#ch2mt-41}},
4088    year        = 2010,
4089}
4090
4091@manual{JUC,
4092    keywords    = {Java concurrency library},
4093    contributer = {pabuhr@plg},
4094    title       = {java.util.concurrency},
4095    author      = {Doug Lea},
4096    organization= {Oracle},
4097    year        = 2014,
4098    note        = {\href{http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/package-summary.html}{http://docs.oracle.com/\-javase/7/\-docs/\-api/\-java/\-util/\-concurrent/\-package-summary.html}},
4099}
4100
4101% K
4102
4103@inproceedings{Buhr96b,
4104    author      = {Peter A. Buhr and Martin Karsten and Jun Shih},
4105    title       = {{\small\textsf{KDB}}: A Multi-threaded Debugger for Multi-threaded Applications},
4106    booktitle   = {Proc. of SPDT'96: SIGMETRICS Symp. on Parallel and Distributed Tools},
4107    publisher   = {ACM Press},
4108    address     = {Philadelphia, Pennsylvania, U.S.A.},
4109    month       = may,
4110    year        = 1996,
4111    pages       = {80-87},
4112}
4113
4114@article{Duggan96,
4115    keywords    = {concurrency, critical section},
4116    contributer = {pabuhr@plg},
4117    author      = {Dominic Duggan and Gordon V. Cormack and John Ophel},
4118    title       = {Kinded Type Inference for Parametric Overloading},
4119    journal     = acta,
4120    volume      = 33,
4121    number      = 1,
4122    year        = 1996,
4123    pages       = {21-68},
4124}
4125
4126@article{Peter35,
4127    keywords    = {recursion, Ackermann function},
4128    contributer = {pabuhr@plg},
4129    author      = {R{\'{o}}zsa P{\'{e}}ter},
4130    title       = {Konstruktion nichtrekursiver Funktionen},
4131    publisher   = {Springer},
4132    journal     = mathann,
4133    number      = 111,
4134    volume      = 1,
4135    pages       = {42-60},
4136    month       = dec,
4137    year        = 1935,
4138}
4139
4140% L
4141
4142@TechReport{WVWR88:L,
4143    contributer = {gjditchf@plg},
4144    author      = {Hanno Wupper and Jan Vytopil and Martin Wieczorek and Dick de Reus},
4145    title       = {{L}_{3333}: A Simple Language with Static Typing of Hard Real-Time Constraints},
4146    institution = {Department of Informatics, Faculty of Science, Catholic University Nijmegen},
4147    year        = 1988,
4148    number      = {88-3},
4149    address     = {Katholieke Universiteit Nijmegen, Fakulteit der Wiskunde
4150                   en Natuurwetenschappen, Infomatica V, Toernooiveld, 6512
4151                   ED Nijmegen, The Netherlands},
4152    month       = apr,
4153    annote      = {A polymorphic typed lambda calculus with \begin{itemize}
4154                   \item A trivial type, ``!'', with a single element.
4155                   \item Labelled types, distinct from each other.
4156                   ``!False'' and ``!True'' are distinct types, each
4157                   containing a single value serving as boolean false and
4158                   true.  ``2'' is an abbreviation for ``!0 succ succ'', the
4159                   type containing only 2.
4160                   \item Disjunction types ``\{| !False, !True |\}''.  Interval
4161                   types are abbreviations for disjunctions.
4162                   \item Conjunction types ``\{\& real Re, real Im \&\}'', where
4163                   ``Re'' and ``Im'' are type labels that distinguish between the
4164                   fields.
4165                   \item Pair types ``\{^ a, b ^\}'', for use in recursive types
4166                   and dyadic infix functions.
4167                   \item Function types, universal types, existential types,
4168                   and subtyping (viewed as coercion), as in Fun.
4169                   \end{itemize}
4170                   Disjunctions and conjunctions types are associative and
4171                   commutative (i.e. flat).  Each type has a matching
4172                   constructor.  Functions use pattern matching on type
4173                   labels to strip labels and extract conjunction fields:
4174                   \begin{verbatim}
4175                   \lambda n {0...1000000 Guilders}. ... n ...
4176                   -- both argument and n are amounts in Guilders.
4177                   \lambda n {0...1000000} Guilders. ... n ...
4178                   -- argument in Guilders, but n is in 0...1000000.
4179                   \end{verbatim}
4180                   ``Function bundles'' (conjunctions of functions), applied
4181                   to arguments, replace Dijkstra's guarded if...fi, but the
4182                   bundles are first-class and the guards are part of their
4183                   type.
4184
4185                   The same trick used to define the type ``2'' is used to
4186                   move absolute times into the type system, to allow static
4187                   checking. ``0`'' denotes a time before the system begins
4188                   execution.  ``\#`'' denotes ``eventually'', and ``?`''
4189                   denotes ``maybe never''.  ``a\\t'' and ``a@t'' are types
4190                   of a value of type a that will be available no later
4191                   (earlier) than time t.  Universals and existentials use
4192                   subtyping to parameterize functions by start time:
4193                   \begin{verbatim}
4194                   let f {\forall t > \#`}. {a\t} \on {b\t+d}
4195                   f{then} y -- argument y must be available at time ``then''.
4196                   \end{verbatim}
4197                   Functions can return before their arguments are available
4198                   if they don't use them.  However, function {\em bundles}
4199                   can't return until their result type is known, so the
4200                   lower and upper time bounds of the bundle are the
4201                   second-last upper bound of the component functions: at
4202                   that time, there is only one alternative left.
4203
4204                   Explicit time parameterization allows slack in time
4205                   specification.  Tools could point out slack or determine
4206                   degree of parallelism.}
4207}
4208
4209@mastersthesis{Clarke90,
4210    keywords    = {concurrency, postponing requests},
4211    contributer = {pabuhr@plg},
4212    author      = {Charles L. A. Clarke},
4213    title       = {Language and Compiler Support for Synchronous Message Passing Architectures},
4214    school      = {University of Waterloo},
4215    year        = 1990,
4216    address     = {Waterloo, Ontario, Canada, N2L 3G1}
4217}
4218
4219@article{Tennent77,
4220    keywords    = {abstraction, correspondence, Pascal},
4221    contributer = {gjditchfield@plg},
4222    author      = {R. D. Tennent},
4223    title       = {Language Design Methods Based on Semantic Principles},
4224    journal     = acta,
4225    year        = 1977,
4226    volume      = 8,
4227    number      = 2,
4228    pages       = {97-112},
4229    note        = {reprinted in \cite{pldesign}},
4230    abstract    = {
4231        Two language design methods based on principles derived from the
4232        denotational approach to programming language semantics are
4233        described and illustrated by an application to the language Pascal.
4234        The principles are, firstly, the correspondence between parametric
4235        and declarative mechanisms and secondly, a principle of abstraction
4236        for programming languages adapted from set theory.  Several useful
4237        extensions and generalizations of Pascal emerge by applying these
4238        principles, including a solution to the array parameter problem,
4239        and a modularization facility.
4240    },
4241}
4242
4243@article{Liskov86,
4244    keywords    = {synchronous communication, concurrency},
4245    contributer = {pabuhr@plg},
4246    author      = {Barbara Liskov and Maurice Kerlihy and Lucy Gilbert},
4247    title       = {Limitations of Synchronous Communication with Static
4248                   Process Structure in Languages for Distributed Computing},
4249    journal     = {},
4250    volume      = {},
4251    number      = {},
4252    month       = {},
4253    year        = {},
4254    pages       = {},
4255}
4256
4257@article{Linda,
4258    keywords    = {Linda, concurrency},
4259    contributer = {pabuhr@plg},
4260    author      = {Nicholas Carriero and David Gelernter},
4261    title       = {Linda in Context},
4262    journal     = cacm,
4263    volume      = 32,
4264    number      = 4,
4265    month       = apr,
4266    year        = 1989,
4267    pages       = {444-458}
4268}
4269
4270@manual{libmill,
4271    keywords    = {libmill},
4272    contributer = {pabuhr@plg},
4273    author      = {libmill},
4274    title       = {{G}o-style concurrency in {C}, Version 1.18},
4275    organization= {libmill},
4276    address     = {\href{http://libmill.org/documentation.html}{http://\-libmill.org/\-documentation.html}},
4277    month       = jan,
4278    year        = 2017,
4279}
4280
4281@book{Weissman67,
4282    keywords    = {lisp},
4283    author      = {Clark Weissman},
4284    title       = {Lisp 1.5 Primer},
4285    publisher   = {Dickenson Publishing},
4286    address     = {Belmont},
4287    year        = 1967,
4288}
4289
4290@article{Sundell08,
4291    keywords    = {lock free, deque},
4292    contributer = {pabuhr@plg},
4293    author      = {H{\r{a}}kan Sundell and Philippas Tsigas},
4294    title       = {Lock-free Deques and Doubly Linked Lists},
4295    journal     = {J. Parallel Distrib. Comput.},
4296    volume      = 68,
4297    number      = 7,
4298    year        = 2008,
4299    pages       = {1008-1020},
4300}
4301
4302@misc{Matsakis17,
4303    keywords    = {Rust, Chalk, PROLOG},
4304    contributer = {a3moss@uwaterloo.ca},
4305    author      = {Nicholas Matsakis},
4306    title       = {Lowering {Rust} traits to logic},
4307    month       = jan,
4308    year        = 2017,
4309    howpublished= {\href{http://smallcultfollowing.com/babysteps/blog/2017/01/26/lowering-rust-traits-to-logic/}
4310                  {http://smallcultfollowing.com/\-babysteps/\-blog/\-2017/\-01/\-26/\-lowering-rust-traits-to-logic/}},
4311    optnote     = {Accessed: 2019-01},
4312}
4313
4314@article{Cormack89,
4315    keywords    = {parsing, LR, error recovery},
4316    contributer = {pabuhr@plg},
4317    author      = {Gordon V. Cormack},
4318    title       = {An {LR} Substring Parser for Noncorrecting Syntax Error Recovery},
4319    journal     = sigplan,
4320    volume      = 24,
4321    number      = 7,
4322    month       = jul,
4323    year        = 1989,
4324    pages       = {161-169},
4325    note        = {Proceedings of the {SIGPLAN}~'89 Conference on Programming Language Design and Implementation}
4326}
4327
4328@manual{Lua,
4329    keywords    = {Lua},
4330    contributer = {pabuhr@plg},
4331    author      = {Lua},
4332    title       = {Lua 5.3 Reference Manual},
4333    address     = {\href{https://www.lua.org/manual/5.3}{https://\-www.lua.org/\-manual/\-5.3}},
4334    year        = 2018,
4335}
4336
4337% M
4338
4339@book{M68K,
4340    keywords    = {M680XX, Motorola},
4341    contributer = {pabuhr@plg},
4342    key         = {Motorola},
4343    title       = {M68000 Family Programmer's Reference Manual},
4344    publisher   = {Motorola},
4345    year        = 1992,
4346}
4347
4348@misc{Haberman16,
4349    keywords    = {C++ template expansion},
4350    contributer = {a3moss@uwaterloo.ca},
4351    author      = {Josh Haberman},
4352    title       = {Making arbitrarily-large binaries from fixed-size {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} code},
4353    year        = 2016,
4354    howpublished= {\href{http://blog.reverberate.org/2016/01/making-arbitrarily-large-binaries-from.html}
4355                  {
4356          {http://blog.reverberate.org/\-2016/\-01/\-making-arbitrarily-large-binaries-from.html}
4357          }},
4358    optnote     = {Accessed: 2016-09},
4359}
4360
4361@article{c++libs,
4362    keywords    = {directory structure},
4363    contributer = {gjditchfield@plg},
4364    author      = {J. M. Coggins and G. Bollella},
4365    title       = {Managing {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Libraries},
4366    journal     = sigplan,
4367    year        = 1989,
4368    month       = jun, volume = 24, number = 6, pages = {37-48},
4369    abstract    = {
4370        This paper describes a scheme we have used to manage a large
4371        library written in the C++ language.  The scheme imposes a
4372        directory structure, and represents dependency hierarchy in a
4373        globally accessible file we call the 'prelude' file.  We also
4374        discuss the structure of the description files (makefiles) used
4375        with the UNIX options we have found to be useful in reducing the
4376        size of the library, and how to minimize recompilation time after
4377        trivial changes to the source code of the library.
4378    }
4379}
4380
4381@inproceedings{mprof,
4382    keywords    = {malloc},
4383    contributer = {gjditchfield@plg},
4384    author      = {Benjamin Zorn and Paul Hilfinger},
4385    title       = {A Memory Allocation Profiler for {C} and Lisp Programs},
4386    booktitle   = {Summer 1988 {USENIX} proceedings},
4387    year        = 1988
4388}
4389
4390@manual{MMTk,
4391    keywords    = {Java memory management},
4392    contributer = {pabuhr@plg},
4393    title       = {MMTk: The Memory Management Toolkit},
4394    author      = {Steve Blackburn and Robin Garner and Daniel Frampton},
4395    month       = sep,
4396    year        = 2006,
4397    note        = {\textsf{http://cs.anu.edu.au/\-$\sim$Robin.Garner/\-mmtk-guide.pdf}},
4398}
4399
4400@article{Adve10,
4401    keywords    = {Java memory management},
4402    contributer = {pabuhr@plg},
4403    author      = {Sarita V. Adve and Hans-J. Boehm},
4404    title       = {Memory Models: A Case for Rethinking Parallel Languages and Hardware},
4405    journal     = cacm,
4406    volume      = 53,
4407    number      = 8,
4408    month       = aug,
4409    year        = 2010,
4410    pages       = {90-101},
4411    publisher   = {ACM},
4412    address     = {New York, NY, USA},
4413}
4414@techreport{Mesa,
4415    keywords    = {monitors, packages},
4416    contributer = {pabuhr@plg},
4417    author      = {James G. Mitchell and William Maybury and Richard Sweet},
4418    title       = {Mesa Language Manual},
4419    institution = {Xerox Palo Alto Research Center},
4420    number      = {CSL--79--3},
4421    month       = apr,
4422    year        = 1979
4423}
4424
4425@article{Andrews89,
4426    keywords    = {semaphore, split-binary, baton},
4427    contributer = {pabuhr@plg},
4428    author      = {Gregory R. Andrews},
4429    title       = {A Method for Solving Synronization Problems},
4430    journal     = scp,
4431    volume      = 13,
4432    number      = 4,
4433    month       = dec,
4434    year        = 1989,
4435    pages       = {1-21},
4436}
4437
4438@inproceedings{Mitchell78,
4439    keywords    = {Mesa},
4440    contributer = {pabuhr@plg},
4441    author      = {James G. Mitchell},
4442    title       = {Mesa: A Designer's User Perspective},
4443    booktitle   = {Spring CompCom 78},
4444    organization= {Sixteenth IEEE Computer Society International Conference},
4445    address     = {San Francisco, California, U.S.A.},
4446    month       = feb,
4447    year        = 1978,
4448    pages       = {36-39},
4449    note        = {IEEE Catalog No. 78CH1328-4C},
4450}
4451
4452@article{Gentleman81,
4453    keywords    = {messages, concurrency},
4454    contributer = {pabuhr@plg},
4455    author      = {W. Morven Gentleman},
4456    title       = {Message Passing between Sequential Processes:
4457                   the Reply Primitive and the Administrator Concept},
4458    journal     = spe,
4459    month       = may,
4460    year        = 1981,
4461    volume      = 11,
4462    number      = 5,
4463    pages       = {435-466}
4464}
4465
4466@article{Cormack88,
4467    keywords    = {concurrency},
4468    contributer = {pabuhr@plg},
4469    author      = {G. V. Cormack},
4470    title       = {A Micro Kernel for Concurrency in C},
4471    journal     = spe,
4472    month       = may,
4473    year        = 1988,
4474    volume      = 18,
4475    number      = 4,
4476    pages       = {485-491}
4477}
4478
4479@article{Buhr90a,
4480    keywords    = {concurrency, light-weight process, shared memory},
4481    contributer = {pabuhr@plg},
4482    author      = {Peter A. Buhr and Richard A. Stroobosscher},
4483    title       = {The $\mu${S}ystem: Providing Light-Weight Concurrency on Shared-Memory Multiprocessor Computers Running {UNIX}},
4484    journal     = spe,
4485    volume      = 20,
4486    number      = 9,
4487    month       = sep,
4488    year        = 1990,
4489    pages       = {929-963},
4490}
4491
4492@techreport{uSystem,
4493    keywords    = {C, concurrency, light-weight process, shared memory},
4494    contributer = {pabuhr@plg},
4495    author      = {Peter A. Buhr and Hamish I. Macdonald and Richard A. Stroobosscher},
4496    title       = {$\mu${S}ystem Annotated Reference Manual, Version 4.4.3},
4497    institution = {Department of Computer Science, University of Waterloo},
4498    address     = {Waterloo, Ontario, Canada, N2L 3G1},
4499    month       = sep,
4500    year        = 1994,
4501    note        = {\href{https://plg.uwaterloo.ca/~usystem/pub/uSystem/uSystem.pdf}{https://\-plg.uwaterloo.ca/\-$\sim$usystem/\-pub/\-uSystem/\-uSystem.pdf}},
4502}
4503
4504@book{Mips4000,
4505    key         = {Mips4000},
4506    title       = {MIPS R4000 Microprocessor User's Manual},
4507    publisher   = {MIPS Computer Systems Inc},
4508    year        = 1991,
4509}
4510
4511@inproceedings{Mjolner,
4512    keywords    = {Mjolner, hierarchical windows},
4513    contributer = {pabuhr@plg},
4514    author      = {G\"{o}rel Hedin and Boris Magnusson},
4515    title       = {The Mj{\o}lner Environment: Direct Interaction with Abstractions},
4516    booktitle   = {Proceedings of the European Conference on Object Oriented Programming},
4517    organization= {ECOOP'88},
4518    publisher   = {Springer},
4519    volume      = 322,
4520    editor      = {S. Gjessing and K. Nygaard},
4521    address     = {Oslo, Norway},
4522    month       = aug,
4523    year        = 1988,
4524    pages       = {41-54},
4525    note        = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
4526}
4527
4528@article{Skillicorn98,
4529    keywords    = {parallel models},
4530    contributer = {pabuhr@plg},
4531    author      = {David B. Skillicorn and Domenico Talia},
4532    title       = {Models and Languages for Parallel Computation},
4533    journal     = acmcs,
4534    volume      = 30,
4535    number      = 2,
4536    month       = jun,
4537    year        = 1998,
4538    pages       = {123-169},
4539}
4540
4541@article{Werther96,
4542    keywords    = {C++, language syntax},
4543    contributer = {pabuhr@plg},
4544    author      = {Ben Werther and Damian Conway},
4545    title       = {A Modest Proposal: {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Resyntaxed},
4546    journal     = sigplan,
4547    volume      = 31,
4548    number      = 11,
4549    month       = nov,
4550    year        = 1996,
4551    pages       = {74-82},
4552}
4553
4554@book{Alexandrescu01,
4555    keywords    = {c design-patterns programming},
4556    contributer = {pabuhr@plg},
4557    author      = {Andrei Alexandrescu},
4558    title       = {Modern C++ Design: Generic Programming and Design Patterns Applied},
4559    publisher   = {Addison-Wesley Professional},
4560    address     = {Boston},
4561    month       = feb,
4562    year        = 2001,
4563    isbn        = {0201704315},
4564}
4565
4566@book{Tanenbaum92,
4567    keywords    = {concurrency, operating systems},
4568    contributer = {pabuhr@plg},
4569    author      = {Andrew S. Tanenbaum},
4570    title       = {Modern Operating Systems},
4571    publisher   = {Prentice-Hall},
4572    address     = {Englewood Cliffs},
4573    year        = 1992,
4574}
4575
4576@article{Wirth77,
4577    keywords    = {modules, coroutines},
4578    contributer = {pabuhr},
4579    author      = {Niklaus Wirth},
4580    title       = {Modula: a Language for Modular Multiprogramming},
4581    journal     = spe,
4582    month       = {January--February},
4583    year        = 1977,
4584    volume      = 7,
4585    number      = 1,
4586    pages       = {3-35},
4587}
4588
4589@book{Harbison92,
4590    contributer = {mhcoffin},
4591    author      = {Samuel P. Harbison},
4592    title       = {Modula-3},
4593    publisher   = {Prentise Hall, Inc.},
4594    year        = {1992},
4595    comment     = {This is a textbook for learning Modula-3.}
4596}
4597
4598@techreport{Modula-3:old,
4599    keywords    = {Modula-3, inheritance, type extension},
4600    contributer = {gjditchfield@plg},
4601    author      = {Luca Cardelli and James Donahue and Lucille Glassman and Mick
4602                   Jordan and Bill Kalsow and Greg Nelson},
4603    title       = {Modula-3 Report},
4604    institution = {Systems Research Center},
4605    address     = {130 Lytton Avenue, Palo Alto, California  94301},
4606    month       = aug,
4607    year        = 1988,
4608    number      = 31
4609}
4610 
4611@article{Dueck90,
4612    keywords    = {attribute grammars},
4613    contributer = {pabuhr@plg},
4614    author      = {Gerald D. P. Dueck and Gordon V. Cormack},
4615    title       = {Modular Attribute Grammars},
4616    journal     = {The Computer Journal},
4617    month       = apr,
4618    year        = 1990,
4619    volume      = 33,
4620    number      = 2,
4621    pages       = {164-172},
4622}
4623
4624@article{Yemini85,
4625    keywords    = {exception handling},
4626    contributer = {pabuhr@plg},
4627    author      = {Shaula Yemini and Daniel M. Berry},
4628    title       = {A Modular Verifiable Exception-Handling Mechanism},
4629    journal     = toplas,
4630    month       = apr,
4631    year        = 1985,
4632    volume      = 7,
4633    number      = 2,
4634    pages       = {214-243},
4635}
4636
4637@article{Buhr95b,
4638    keywords    = {concurrency, monitors, classification},
4639    contributer = {pabuhr@plg},
4640    author      = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
4641    title       = {Monitor Classification},
4642    journal     = acmcs,
4643    volume      = 27,
4644    number      = 1,
4645    month       = mar,
4646    year        = 1995,
4647    pages       = {63-107},
4648}
4649
4650@article{Hoare74,
4651    keywords    = {monitor},
4652    contributer = {pabuhr@plg},
4653    author      = {C. A. R. Hoare},
4654    title       = {Monitors: An Operating System Structuring Concept},
4655    journal     = cacm,
4656    volume      = 17,
4657    number      = 10,
4658    month       = oct,
4659    year        = 1974,
4660    pages       = {549-557},
4661    annote      = {
4662    }
4663}
4664
4665@inbook{Buhr99a,
4666    keywords    = {concurrency, monitors, classification},
4667    contributer = {pabuhr@plg},
4668    author      = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
4669    title       = {Encyclopedia of Computer Science and Technology},
4670    chapter     = {Monitor Taxonomy},
4671    publisher   = {Marcel Dekker, Inc},
4672    volume      = {40, supplement 25},
4673    year        = 1999,
4674    pages       = {191-212},
4675}
4676%    editor     = {Allen Kent and James G. Williams},
4677
4678@incollection{MPC,
4679    keywords    = {user-level threading},
4680    contributer = {pabuhr@plg},
4681    author      = {Marc P\'erache and Herv\'e Jourdren and Raymond Namyst},
4682    title       = {MPC: A Unified Parallel Runtime for Clusters of {NUMA} Machines},
4683    booktitle   = {Euro-Par 2008},
4684    pages       = {329-342},
4685    publisher   = {Springer},
4686    address     = {Berlin, Heidelberg},
4687    year        = 2008,
4688    volume      = 5168,
4689    series      = {Lecture Notes in Computer Science},
4690}
4691
4692@manual{MPI,
4693    keywords    = {MPI},
4694    contributer = {pabuhr@plg},
4695    title       = {MPI: A Message-Passing Interface Standard, Version 3.1},
4696    organization= {Message Passing Interface Forum},
4697    address     = {University of Tennessee, Knoxville, Tennessee},
4698    month       = jun,
4699    year        = 2015,
4700    note        = {\href{http://www.mpi-forum.org/docs/mpi-3.1/mpi31-report.pdf}{http://www.mpi-forum.org/\-docs/\-mpi-3.1/\-mpi31-report.pdf}},
4701}
4702
4703@article{multilisp,
4704    keywords    = {futures, scheme},
4705    contributer = {gjditchfield@plg},
4706    author      = {Halstead, Jr.,Robert H.},
4707    title       = {Multilisp: A Language for Concurrent Symbolic Programming},
4708    journal     = toplas,
4709    volume      = 7,
4710    number      = 4,
4711    pages       = {501-538},
4712    month       = oct,
4713    year        = 1985,
4714    comment     = {
4715        (future E) begins evaluating the expression E, and
4716        returns a ``future'' representing the value.  When evaluation is
4717        finished, the value of E replaces the future.  Operations that need
4718        the future's value suspend until it is available.  Assignment and
4719        parameter passing do not suspend.  Future introduces concurrency
4720        between the calculation of a value and its use; reference to
4721        futures is a synchronization mechanism.
4722
4723        (pcall F A B ... C) concurrently evaluates F, A, B, ... C, and then
4724        applies F to the arguments.  pcall can be built from future and a
4725        ``touch'' operation.  pcall is included because it may not be easy
4726        to determine that there are no critical sections between the future
4727        expression and the code between the future call and the value's
4728        first use.
4729
4730        (delay E) is like future, but E's process does not begin until its
4731        value is needed.  It provides lazy evaluation.  Replacing delay
4732        with future would launch an infinite number of processes.
4733    }
4734}
4735
4736@techreport{Bretthauer89,
4737    keywords    = {multiple inheritance},
4738    contributer = {pabuhr@plg},
4739    author      = {Harry Bretthauer and Thomas Christaller and J\"{u}rgen Kopp}, 
4740    title       = {Multiple vs. Single Inheritance in Object-oriented Programming Languages. What do we really want?},
4741    institution = {Gesellschaft F\"{u}r Mathematik und Datenverarbeitung mbH},
4742    address     = {Schlo$\beta$ Birlinghoven, Postfach 12 40, D-5205 Sankt Augustin 1, Deutschland},
4743    number      = {Arbeitspapiere der GMD 415},
4744    month       = nov,
4745    year        = 1989,
4746}
4747
4748@inproceedings{c++:multinh,
4749    keywords    = {C++, multiple inheritance, implementation},
4750    contributer = {gjditchfield@plg},
4751    author      = {Bjarne Stroustrup},
4752    title       = {Multiple Inheritance for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4753    booktitle   = {Proceedings of the Spring '87 EUUG Conference},
4754    month       = may, year = 1987
4755}
4756
4757@inproceedings{st:mult,
4758    keywords    = {smalltalk, multiple inheritance, implementation},
4759    contributer = {gjditchfield@plg},
4760    author      = {Daniel H. H. Ingalls and A. H. Borning},
4761    title       = {Multiple Inheritance in Smalltalk-80},
4762    booktitle   = {Proceedings of the National Conference on Artificial Intelligence},
4763    month       = aug,
4764    year        = 1982,
4765    pages       = {234-238},
4766    organization= {American Association for Artificial Intelligence},
4767    comment     = {
4768        Methods are looked up in the current class, the superclasses, the
4769        supersuperclasses, etc.  The same method can be inherited
4770        repeatedly, but having different methods for the same message is an
4771        error.  Only one copy is made for multiply-inherited fields.
4772
4773        {\tt X.m} is the method m in superclass X.  {\tt super.m} is
4774        allowed if there is no ambiguity; {\tt self super.m} replaces {\tt
4775        super m}.  {\tt all.m} invokes all inherited versions of m.
4776
4777        Methods on the first-superclass chain are found as usual.  Methods
4778        from other superclasses are copied into the class dictionary.  An
4779        error method is created if inherited methods conflict.  The parser
4780        is changed to allow compound selectors.  {\tt Object
4781        messageNotUnderstood} is changed to look for compound selectors and
4782        dynamically add a method with the right name and body to the class.
4783        When methods are edited, they are copied into subclasses and
4784        compound selector versions are deleted, as appropriate.
4785    }
4786}
4787
4788@article{Lamport86I,
4789    keywords    = {software solutions, N-thread, mutual exclusions},
4790    contributer = {pabuhr@plg},
4791    author      = {Leslie Lamport},
4792    title       = {The Mutual Exclusion Problem: Part\,{I}--A Theory of Interprocess Communication},
4793    journal     = jacm,
4794    volume      = 33,
4795    number      = 2,
4796    month       = apr,
4797    year        = 1986,
4798    pages       = {313--326},
4799    numpages    = {14},
4800    publisher   = {ACM},
4801    address     = {New York, NY, USA},
4802}
4803
4804@article{Lamport86II,
4805    keywords    = {software solutions, N-thread, mutual exclusions},
4806    contributer = {pabuhr@plg},
4807    author      = {Leslie Lamport},
4808    title       = {The Mutual Exclusion Problem: Part\,{II}--Statement and Solutions},
4809    journal     = jacm,
4810    volume      = 33,
4811    number      = 2,
4812    month       = apr,
4813    year        = 1986,
4814    pages       = {327--348},
4815    numpages    = {22},
4816    publisher   = {ACM},
4817    address     = {New York, NY, USA},
4818}
4819
4820@article{Burns78,
4821    keywords    = {hardware, N-process solution, O(N)},
4822    contributer = {pabuhr@plg},
4823    author      = {James E. Burns},
4824    title       = {Mutual Exclusion with Linear Waiting Using Binary Shared Variables},
4825    journal     = {SIGACT News},
4826    volume      = 10,
4827    number      = 2,
4828    month       = {Summer},
4829    year        = 1978,
4830    pages       = {42-47},
4831}
4832
4833@inproceedings{Burns80,
4834    keywords    = {N-process software solution},
4835    contributer = {pabuhr@plg},
4836    author      = {James E. Burns and Nancy A. Lynch},
4837    title       = {Mutual Exclusion using Indivisible Reads and Writes},
4838    booktitle   = {Proceedings of the 18th Annual Allerton Conference on Communications, Control and Computing, Monticello, Illinois, USA},
4839    year        = 1980,
4840    pages       = {833-842},
4841    note        = {\href{http://groups.csail.mit.edu/tds/papers/Lynch/allertonconf.pdf}{http://\-groups.csail.mit.edu/\-tds/\-papers/\-Lynch/\-allertonconf.pdf} [Accessed on March 2014]},
4842    optnote     = {\textsf{http://\-groups.csail.mit.edu/\-tds/\-papers/\-Lynch/\-allertonconf.pdf}},
4843}
4844
4845@article{Peterson81,
4846    keywords    = {concurrency, critical section},
4847    contributer = {pabuhr@plg},
4848    author      = {G. L. Peterson},
4849    title       = {Myths About the Mutual Exclusion Problem},
4850    journal     = ipl,
4851    year        = 1981,
4852    month       = jun,
4853    volume      = 12,
4854    number      = 3,
4855    pages       = {115-116},
4856}
4857
4858% N
4859
4860@techreport{Drepper03,
4861    keywords    = {NPTL, threading, 1:1 model},
4862    contributer = {pabuhr@plg},
4863    author      = {Ulrich Drepper and Ingo Molnar},
4864    title       = {The Native POSIX Thread Library for Linux},
4865    institution = {Red Hat},
4866    year        = 2003,
4867    note        = {\href{http://www.cs.utexas.edu/~witchel/372/lectures/POSIX_Linux_Threading.pdf}{http://www.cs.utexas.edu/\-$\sim$witchel/\-372/\-lectures/\-POSIX\_Linux\_Threading.pdf}},
4868}
4869
4870@article{Haddon77,
4871    keywords    = {monitors, nested monitor calls},
4872    contributer = {pabuhr@plg},
4873    author      = {Bruce K. Haddon},
4874    title       = {Nested Monitor Calls},
4875    journal     = osr,
4876    volume      = 11,
4877    number      = 4,
4878    month       = oct,
4879    year        = 1977,
4880    pages       = {18-23},
4881}
4882
4883@inproceedings{nesting,
4884    keywords    = {},
4885    contributer = {gjditchfield@plg},
4886    author      = {Lori A. Clarke and Jack C. Wilenden and Alexander L. Wolf},
4887    title       = {Nesting in {Ada} Programs is for the Birds},
4888    booktitle   = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada}
4889        Programming Language},
4890    year        = 1980,
4891    month       = dec, pages = {139-145},
4892    note        = {SIGPLAN Notices, v. 15, n. 11},
4893    abstract    = {
4894        Given a data abstraction construct like the Ada package and in the
4895        light of current thoughts on programming methodology, we feel that
4896        nesting is an anachronism.  In this paper we propose a nest-free
4897        program style for Ada that eschews nested program units and
4898        declarations within blocks and instead heavily utilizes packages
4899        and context specifications as mechanisms for controlling
4900        visibility.  We view this proposal as a first step toward the
4901        development of programming methods that exploit the novel language
4902        features available in Ada.  Consideration of this proposal's
4903        ramifications for data flow, control flow, and overall program
4904        structure substantiates our contention that a tree structure is
4905        seldom a natural representation of a program and that nesting
4906        therefore generally interferes with program development and
4907        readability.
4908    }
4909}
4910
4911@inproceedings{Buhr88,
4912    keywords    = {nested classes, persistence},
4913    contributer = {pabuhr@plg},
4914    author      = {P. A. Buhr and C. R. Zarnke},
4915    title       = {Nesting in an Object Oriented Language is NOT for the Birds},
4916    booktitle   = {Proceedings of the European Conference on Object Oriented Programming},
4917    publisher   = {Springer},
4918    volume      = 322,
4919    editor      = {S. Gjessing and K. Nygaard},
4920    address     = {Oslo, Norway},
4921    month       = aug,
4922    year        = 1988,
4923    pages       = {128-145},
4924    note        = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
4925}
4926
4927@inproceedings{Thompson90new,
4928    keywords    = {Plan 9},
4929    contributer = {pabuhr@plg},
4930    title       = {A New {C} Compiler},
4931    author      = {Ken Thompson},
4932    booktitle   = {Proceedings of the Summer 1990 UKUUG Conference},
4933    year        = 1990,
4934    pages       = {41-51},
4935    note        = {\href{http://doc.cat-v.org/bell_labs/new_c_compilers/new_c_compiler.pdf}{http://\-doc.cat-v.org/\-bell\_labs/\-new\_c\_compilers/\-new\_c\_compiler.pdf}},
4936}
4937
4938@article{Trono94,
4939    author      = {John A. Trono},
4940    title       = {A New Exercise in Concurrency},
4941    journal     = {SIGCSE Bulletin},
4942    volume      = {26},
4943    number      = {3},
4944    month       = sep,
4945    year        = {1994},
4946    pages       = {8-10},
4947    publisher   = {ACM},
4948    address     = {New York, NY, USA},
4949}
4950
4951@article{Anderson01,
4952    keywords    = {software solutions, fast path},
4953    contributer = {pabuhr@plg},
4954    author      = {James H. Anderson and Yong-Jik Kim},
4955    title       = {A New Fast-Path Mechanism For Mutual Exclusion},
4956    journal     = {Distributed Computing},
4957    month       = jan,
4958    year        = 2001,
4959    volume      = 14,
4960    number      = 1,
4961    pages       = {17-29},
4962}
4963
4964@article{Lamport74,
4965    keywords    = {concurrency, N-Process solution, O(N)},
4966    contributer = {pabuhr@plg},
4967    author      = {Leslie Lamport},
4968    title       = {A New Solution of Dijkstra's Concurrent Programming Problem},
4969    journal     = cacm,
4970    month       = aug,
4971    year        = 1974,
4972    volume      = 17,
4973    number      = 8,
4974    pages       = {453-455},
4975}
4976
4977@book{NeWS,
4978    AUTHOR      = {James Gosling and David S. H. Rosenthal and Richelle J. Arden},
4979    TITLE       = {The {NeWS} Book},
4980    PUBLISHER   = {Springer-Verlag},
4981    YEAR        = {1989}
4982}
4983
4984@article{landin,
4985    keywords    = {},
4986    contributer = {gjditchfield@plg},
4987    author      = {P. J. Landin},
4988    title       = {The Next 700 Programing Languages},
4989    journal     = cacm,
4990    year        = 1966,
4991    volume      = 9,
4992    pages       = {157-164},
4993}
4994
4995@misc{nginx,
4996    key         = {nginx},
4997    author      = {{NGINX}},
4998    howpublished= {\href{https://www.nginx.com}{https://\-www.nginx.com}},
4999}
5000
5001@article{Herlihy05,
5002    keywords    = {Multiprocessors, concurrent data structures, dynamic data structures, memory management, nonblocking synchronization},
5003    contributer = {pabuhr@plg},
5004    author      = {Maurice Herlihy and Victor Luchangco and Paul Martin and Mark Moir},
5005    title       = {Nonblocking Memory Management Support for Dynamic-sized Data Structures},
5006    journal     = tocs,
5007    volume      = 23,
5008    number      = 2,
5009    month       = may,
5010    year        = 2005,
5011    pages       = {146-196},
5012    numpages    = {51},
5013    publisher   = {ACM},
5014    address     = {New York, NY, USA},
5015}
5016
5017% O
5018
5019@inproceedings{oop:abcl/1,
5020    keywords    = {concurrency, OOPL, futures},
5021    contributer = {gjditchfield@plg},
5022    author      = {Akinori Yonezawa and Jean-Pierre Briot and Etsuya Shibayama},
5023    title       = {Object-Oriented Concurrent Programming in {ABCL/1}},
5024    crossref    = "OOPSLA86",
5025    pages       = {258-268},
5026    comment     = {
5027        Actions for messages sent to an object are executed concurrently
5028        iff the object has no members.  A select construct specifies a set
5029        of message patterns.
5030
5031        Express messages have priority.  If an express message arrives
5032        while an ordinary message is being processed, the action for the
5033        ordinary message is suspended or aborted and the action for the
5034        express message is executed.  The sender decides which class a
5035        message belongs in.  Non-interruptible sections can be defined.
5036
5037        Message sends can be non-blocking, or can block until a reply is
5038        received, at the sender's option.  The receiver can continue to
5039        execute after sending the reply.
5040
5041        Replies can send back ``futures'', and put values in them later.
5042        Futures are queues of values, not single values.  The caller can
5043        use a ``ready?'' predicate to test for empty queue, or can use
5044        operations to get the first or all queue elements; these operations
5045        block if the queue is empty.
5046    }
5047}
5048
5049@techreport{Schmidt95,
5050    keywords    = {ACE, concurrency, library},
5051    contributer = {pabuhr@plg},
5052    author      = {Douglas C. Schmidt},
5053    title       = {An OO Encapsulation of Lightweight OS Concurrency Mechanisms in the {ACE} Toolkit},
5054    institution = {Washington University in St. Louis},
5055    year        = 1995,
5056    number      = 31,
5057    note        = {{\small\textsf{http://\-www.cs.wustl.edu/\-$\sim$schmidt/\-PDF/\-IPC\_SAP-92.pdf}}},
5058}
5059
5060@inproceedings{OOEx,
5061    keywords    = {Exceptions, object-oriented programming languages},
5062    contributer = {gjditchfield@plg},
5063    author      = {Christophe Dony},
5064    title       = {An Object-oriented Exception Handling System for an Object-oriented Language},
5065    booktitle   = {ECOOP '88. European Conference on Object-Oriented Programming},
5066    year        = 1988,
5067    pages       = {146-161},
5068    editor      = {S. Gjessing and K. Nygaard},
5069    organization= {DND, The Norwegian Computer Society},
5070    publisher   = {Springer},
5071    comment     = {
5072           Objectives:
5073           - Users can define new exceptions.
5074           - Default handlers can be attached to exceptions.
5075           - Handlers can be attached to classes.
5076           - Handlers can be attached to dynamic entities (expressions).
5077           - Exceptions propagate first along the invocation chain.
5078           - Exceptions should be hierarchically organized classes.
5079           - Handlers should take into account the exception hierarchy (i.e.,
5080             should handle raising of sub-exceptions).
5081           The ``exceptional-event'' class has two subclasses.  ``Warning''
5082           has a ``resume'' method, and ``error'' has ``exit'' and
5083           ``retry'' methods.  Signalling an exception creates an instance
5084           of the exception, whose members are used to pass information
5085           back to the handler.  Handlers are instances of class
5086           ``protect-handler'' with a method ``protect {\em expression}'',
5087           or are methods defined for the class or the exception.
5088    }
5089}
5090
5091@article{CommonObjects,
5092    author      = {A. Snyder},
5093    title       = {Object-Oriented Programming for Common Lisp},
5094    address     = {Palo Alto CA},
5095    year        = 1985,
5096    publisher   = {Software Technology Laboratory, Hewlett-Packard Laboratories},
5097    journal     = {Report ATC-85-1},
5098}
5099
5100@book{objective-c,
5101    keywords    = {},
5102    author      = {Brad J. Cox},
5103    title       = {Object-oriented programming; an evolutionary approach},
5104    publisher   = {Addison-Wesley},
5105    address     = {Boston},
5106    year        = 1986
5107}
5108
5109@misc{obj-c-book,
5110    keywords    = {objective-c},
5111    contributor = {pabuhr@plg},
5112    key         = {Objective-C},
5113    author      = {Objective-C},
5114    publisher   = {Apple Inc.},
5115    year        = 2014,
5116    howpublished= {\href{https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC}{https://\-developer.apple.com/\-library/archive/\-documentation/\-Cocoa/\-Conceptual/\-ProgrammingWithObjectiveC}},
5117}
5118
5119@misc{xcode7,
5120    keywords    = {objective-c},
5121    contributor = {a3moss@uwaterloo.ca},
5122    key         = {Xcode},
5123    title       = {{X}code 7 Release Notes},
5124    year        = 2015,
5125    howpublished= {\href{https://developer.apple.com/library/content/documentation/Xcode/Conceptual/RN-Xcode-Archive/Chapters/xc7_release_notes.html}{https://\-developer.apple.com/\-library/\-content/\-documentation/\-Xcode/\-Conceptual/\-RN-Xcode-Archive/\-Chapters/\-xc7\_release\_notes.html}},
5126}
5127
5128@book{Beta,
5129    keywords    = {Beta, object oriented, concurrency, exceptions},
5130    contributer = {pabuhr@plg},
5131    author      = {Ole Lehrmann Madsen and Birger M{\o}ller-Pedersen and Kristen Nygaard},
5132    title       = {Object-oriented Programming in the {BETA} Programming Language},
5133    publisher   = {Addison-Wesley},
5134    address     = {Boston},
5135    year        = 1993,
5136}
5137
5138@article{Flavors,
5139    author      = {D. A. Moon},
5140    title       = {Object-Oriented Programming with Flavors},
5141    address     = {Portland OR},
5142    month       = sep,
5143    year        = 1986,
5144    journal     = {Proc. ACM Conf. on Object-Oriented Systems, Languages and Applications},
5145}
5146
5147@article{Buhr00b,
5148    keywords    = {concurrency, C++, real-time},
5149    contributer = {pabuhr@plg},
5150    author      = {Peter A. Buhr and Ashif S. Harji and Philipp E. Lim and Jiongxiong Chen},
5151    title       = {Object-Oriented Real-Time Concurrency},
5152    journal     = sigplan,
5153    volume      = 35,
5154    number      = 10,
5155    month       = oct,
5156    year        = 2000,
5157    pages       = {29-46},
5158    note        = {OOPSLA'00, Oct. 15--19, 2000, Minneapolis, Minnesota, U.S.A.},
5159}
5160
5161@book{Meyer88,
5162    keywords    = {Eiffel},
5163    contributer = {pabuhr@plg},
5164    author      = {Bertrand Meyer},
5165    title       = {Object-oriented Software Construction},
5166    publisher   = {Prentice-Hall},
5167    address     = {Englewood Cliffs},
5168    year        = {1988},
5169    series      = {Prentice-Hall International Series in Computer Science},
5170}
5171
5172@article{objectPascal,
5173    keywords    = {objects, modules},
5174    contributer = {gjditchfield@plg},
5175    author      = {Larry Tesler},
5176    title       = {Object Pascal Report},
5177    journal     = {Structured Language World},
5178    year        = 1985,
5179    volume      = 9,
5180    number      = 3,
5181}
5182
5183@misc{obj-c:next,
5184    keywords    = {categories, protocols, Objective C},
5185    contributor = {gjditchfield@angus},
5186    author      = {NeXT Computer, Inc.},
5187    title       = {Objective C Extensions},
5188    howpublished= {On-line documentation in ``NEXTSTEP 3.1 Developer''},
5189    year        = 1993
5190}
5191
5192@book{Galletly96,
5193    keywords    = {occam},
5194    author      = {John Galletly},
5195    title       = {{OCCAM} 2: Including {OCCAM} 2.1},
5196    publisher   = {{UCL} (University College London) Press},
5197    address     = {London},
5198    edition     = {2nd},
5199    year        = 1996,
5200}
5201
5202@techreport{Morrison88,
5203    keywords    = {objects, concurrency, persistence},
5204    contributer = {pabuhr@plg},
5205    author      = {R. Morrison and A. L. Brown and R. Carrick and R. Connor and A. Dearle},
5206    title       = {On the integration of Object-Oriented and Process-Oriented computation in persistent environments},
5207    institution = {Department of Computational Science, University of St. Andrews, Scotland},
5208    number      = {PPRR 57},
5209    month       = jan,
5210    year        = 1988,
5211}
5212
5213@article{Peterson73,
5214    keywords    = {goto, structured programming},
5215    contributer = {pabuhr@plg},
5216    author      = {W. W. Peterson and T. Kasami and N. Tokura},
5217    title       = {On the Capabilities of While, Repeat, and Exit Statements},
5218    journal     = cacm,
5219    month       = aug,
5220    year        = 1973,
5221    volume      = 16,
5222    number      = 8,
5223    pages       = {503-512}
5224}
5225
5226@article{Baker82,
5227    keywords    = {compilation},
5228    contributer = {gjditchfield@plg},
5229    author      = {Theodore P. Baker},
5230    title       = {A One-Pass Algorithm for Overload Resolution in {Ada}},
5231    journal     = toplas,
5232    year        = 1982,
5233    month       = oct,
5234    volume      = 4,
5235    number      = 4,
5236    pages       = {601-614},
5237    abstract    = {
5238        A simple method is presented for detecting ambiguities and finding
5239        the correct interpretations of expressions in the programming
5240        language Ada.  Unlike previously reported solutions to this
5241        problem, which require multiple passes over a tree structure, the
5242        method described here operates in one bottom-up pass, during which
5243        a directed acyclic graph is produced.  The correctness of this
5244        approach is demonstrated by a brief formal argument.
5245    },
5246    comment     = {
5247        See also \cite{D:overload}.
5248        }
5249}
5250
5251@manual{OpenMP,
5252    keywords    = {concurrency, openmp, spmd},
5253    contributer = {pabuhr@plg},
5254    key         = {OpenMP},
5255    title       = {OpenMP Application Program Interface, Version 4.5},
5256    month       = nov,
5257    year        = 2015,
5258    note        = {\href{https://www.openmp.org/wp-content/uploads/openmp-4.5.pdf}{https://\-www.openmp.org/\-wp-content/\-uploads/\-openmp-4.5.pdf}},
5259}
5260
5261@book{Deitel04,
5262    keywords    = {concurrency, operating systems},
5263    contributer = {pabuhr@plg},
5264    author      = {Harvey M. Deitel and Paul J. Deitel and David R. Choffnes},
5265    title       = {Operating Systems},
5266    publisher   = {Pearson Prentice-Hall},
5267    address     = {Englewood Cliffs},
5268    year        = 2004,
5269    edition     = {3rd},
5270}
5271
5272@book{Stalling98,
5273    keywords    = {concurrency, operating systems},
5274    contributer = {pabuhr@plg},
5275    author      = {William Stallings},
5276    title       = {Operating Systems: Internals and Design Principles},
5277    publisher   = {Prentice-Hall},
5278    address     = {Englewood Cliffs},
5279    year        = 1998,
5280    edition     = {3rd},
5281}
5282
5283@book{Stalling01,
5284    keywords    = {concurrency, operating systems},
5285    contributer = {pabuhr@plg},
5286    author      = {William Stallings},
5287    title       = {Operating Systems: Internals and Design Principles},
5288    publisher   = {Prentice-Hall},
5289    address     = {Englewood Cliffs},
5290    year        = 2001,
5291    edition     = {4th},
5292}
5293
5294@book{Silberschatz91,
5295    keywords    = {concurrency, operating systems},
5296    contributer = {pabuhr@plg},
5297    author      = {Abraham Silberschatz and James L. Peterson and Peter Galvin},
5298    title       = {Operating System Concepts},
5299    publisher   = {Addision-Wesley},
5300    address     = {Boston},
5301    year        = 1991,
5302    edition     = {3rd},
5303}
5304
5305@book{Tanenbaum87,
5306    keywords    = {concurrency, operating systems},
5307    contributer = {pabuhr@plg},
5308    author      = {Andrew S. Tanenbaum},
5309    title       = {Operating Systems : Design and Implementation},
5310    publisher   = {Prentice-Hall},
5311    address     = {Englewood Cliffs},
5312    series      = {Software Series},
5313    year        = 1987,
5314}
5315
5316@book{Hansen73,
5317    keywords    = {monitors},
5318    contributer = {pabuhr@plg},
5319    author      = {Per {Brinch Hansen}},
5320    title       = {Operating System Principles},
5321    publisher   = {Prentice-Hall},
5322    address     = {Englewood Cliffs},
5323    year        = 1973,
5324}
5325
5326@book{Bic03,
5327    keywords    = {concurrency, operating systems},
5328    contributer = {pabuhr@plg},
5329    author      = {Lubomir F. Bic and Alan C. Shaw},
5330    title       = {Operating System Principles},
5331    publisher   = {Prentice-Hall},
5332    address     = {Englewood Cliffs},
5333    year        = 2003,
5334}
5335
5336@techreport{milner88,
5337    keywords    = {},
5338    contributer = {gjditchfield@plg},
5339    author      = {Robin Milner},
5340    title       = {Operational and Algebraic Semantics of Concurrent Processes},
5341    institution = {Laboratory for Foundations of Computer Science},
5342    year        = 1988,
5343    address     = {Department of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ},
5344    month       = feb,
5345    number      = {ECS-LFCS-88-46}
5346}
5347
5348@article{Ganzinger80,
5349    contributer = {a3moss@uwaterloo.ca},
5350    author      = {Ganzinger, Harald and Ripken, Knut},
5351    title       = {Operator Identification in {ADA}: Formal Specification, Complexity, and Concrete Implementation},
5352    journal     = {SIGPLAN Notices},
5353    issue_date  = {February 1980},
5354    volume      = {15},
5355    number      = {2},
5356    month       = feb,
5357    year        = {1980},
5358    issn        = {0362-1340},
5359    pages       = {30--42},
5360    numpages    = {13},
5361    url         = {http://doi.acm.org/10.1145/947586.947589},
5362    doi         = {10.1145/947586.947589},
5363    publisher   = {ACM},
5364    address     = {New York, NY, USA}
5365}
5366
5367@article{Ford82,
5368    keywords    = {},
5369    contributer = {pabuhr@plg},
5370    author      = {G. Ford and B. Hansche},
5371    title       = {Optional, Repeatable, and Varying Type Parameters},
5372    journal     = sigplan,
5373    volume      = 17,
5374    number      = 2,
5375    month       = feb,
5376    year        = 1982,
5377    pages       = {41-48},
5378}
5379
5380@manual{pli,
5381    keywords    = {PL/I},
5382    contributer = {gjditchfield@plg},
5383    key         = {IBM},
5384    title       = {{OS} and {DOS} {PL/I} Reference Manual},
5385    organization= {International Business Machines},
5386    edition     = {1st},
5387    month       = sep,
5388    year        = 1981,
5389    note        = {Manual GC26-3977-0},
5390}
5391
5392@techreport{D:overload,
5393    keywords    = {overload resolution, compilation},
5394    contributer = {gjditchfield@plg},
5395    author      = {M. Dausmann et. al.},
5396    title       = {Overloading in {Ada}},
5397    institution = {Universitat Karlsruhe},
5398    year        = 1979,
5399    number      = {23/79},
5400    comment     = {
5401        Probably the earliest description of the two-pass (bottom-up,
5402        top-down) overload resolution algorithm. See also
5403        \cite{PW:overload,WS:overload,PDM:overload,Cor:overload,Bak:overload}.
5404    }
5405}
5406
5407@article{EB87,
5408    keywords    = {packages, private types, assignment, equality},
5409    contributer = {gjditchfield@plg},
5410    author      = {J. Dana Eckart and Richard J. LeBlanc},
5411    title       = {Overloading in the {Ada} Language: Is it too restrictive?},
5412    journal     = {Computer Languages},
5413    year        = 1987,
5414    volume      = 12,
5415    number      = {3/4},
5416    pages       = {163-172},
5417    abstract    = {
5418        Packages in the Ada language provide a mechanism for extending the
5419        language through the development of additional data types.  Such
5420        types can be better integrated into the language using operator
5421        overloading; however, key limitations prevent new types from being
5422        transparently integrated into the language.  Allowing function
5423        names to overload private type names would give a cleaner and
5424        clearer mechanism for building values of these types.  Furthermore,
5425        by allowing redefinitions of ``:='' and by making it easier to
5426        overload ``='' for private types, Ada coud be transformed into a
5427        more expressive language.
5428    }
5429}
5430
5431@article{PW:overload,
5432    keywords    = {compilation},
5433    contributer = {gjditchfield@plg},
5434    author      = {Guido Persch and Georg Winterstein and Manfred Dausman and Sophia Drossopoulou},
5435    title       = {Overloading in Preliminary {Ada}},
5436    journal     = sigplan,
5437    year        = 1980,
5438    month       = nov, volume = 15, number = 11, pages = {47-56},
5439    note        = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada} Programming Language}, 
5440    comment     = {
5441        The two-pass (bottom-up, then top-down) algorithm, with a proof
5442        that two passes suffice.  See also \cite{D:overload}.
5443    }
5444}
5445
5446@article{SR,
5447    keywords    = {concurrency, messages, rendezvous},
5448    contributer = {pabuhr@plg},
5449    author      = {Gregory R. Andrews and Ronald A. Olsson and Michael Coffin and
5450                  Irving Elshoff and Kelvin Nilsen and Titus Purdin and Gregg Townsend},
5451    title       = {An Overview of the {SR} Language and Implementation},
5452    journal     = toplas,
5453    month       = jan,
5454    year        = 1988,
5455    volume      = 10,
5456    number      = 1,
5457    pages       = {51-86},
5458}
5459
5460% P
5461
5462@article{Andrews91,
5463    keywords    = {general concurrency},
5464    contributer = {pabuhr@plg},
5465    author      = {Gregory R. Andrews},
5466    title       = {Paradigms for Process Interaction in Distributed Programs},
5467    journal     = acmcs,
5468    volume      = 23,
5469    number      = 1,
5470    month       = mar,
5471    year        = 1991,
5472    pages       = {49-90},
5473}
5474
5475@book{PPC++,
5476    keywords    = {concurrency, parallel, distributed, C++},
5477    contributer = {pabuhr@plg},
5478    editor      = {Gregory V. Wilson and Paul Lu},
5479    title       = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5480    publisher   = {MIT Press},
5481    series      = {Scientific and Engineering Computation Series},
5482    year        = 1996,
5483    pages       = {1-42},
5484}
5485
5486@incollection{Stroustrup96,
5487    keywords    = {concurrency, C++},
5488    contributer = {pabuhr@plg},
5489    author      = {Bjarne Stroustrup},
5490    title       = {A Perspective on Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5491    editor      = {Gregory V. Wilson and Paul Lu},
5492    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5493    publisher   = {MIT Press},
5494    series      = {Scientific and Engineering Computation Series},
5495    year        = 1996,
5496    pages       = {xxvi-xxvii},
5497}
5498
5499@incollection{Yang96b,
5500    keywords    = {concurrency, C++},
5501    contributer = {pabuhr@plg},
5502    author      = {Shelby X. Yang and Dennis Gannon and Peter Beckman and Jacob Gotwals and Neelakantan Sundaresan},
5503    editor      = {Gregory V. Wilson and Paul Lu},
5504    title       = {p{C}++},
5505    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5506    publisher   = {MIT Press},
5507    address     = {Cambridge},
5508    series      = {Scientific and Engineering Computation Series},
5509    pages       = {507-546},
5510    year        = 1996,
5511}
5512
5513@article{goguen84,
5514    keywords    = {},
5515    contributer = {gjditchfield@plg},
5516    author      = {Goseph A. Goguen},
5517    title       = {Parameterized Programming},
5518    journal     = ieeese,
5519    year        = 1984,
5520    month       = sep, volume = "SE-10", number = 5, pages = {528-543},
5521    abstract    = {
5522        Parameterized programming is a powerful technique for the reliable
5523        reuse of software.  In this technique, modules are parameterized
5524        over very general interfaces that describe what properties of an
5525        environment are required for the module to work correctly.
5526        Reusability is enhanced by the flexibility of the parameterization
5527        mechanism proposed here.  Reliability is further enhanced by
5528        permitting interface requirements to include more than purely
5529        syntactic information.  This paper introduces three new ideas that
5530        seem especially useful in supporting parameterized programming: 1)
5531        {\em theories}, which declare global properties of program modules
5532        and interfaces; 2) {\em views}, which connect theories with program
5533        modules in an elegant way; and 3) {\em module expressions}, a kind
5534        of general structured program transformation which produces new
5535        modules by modifying and combining existing modules.  Although
5536        these ideas are illustrated with some simple examples in the OBJ
5537        programming language, they should also be taken as proposals for an
5538        Ada library system, for adding modules to Prolog, and as
5539        considerations for future language design efforts.  OBJ is an
5540        ultra-high level programming language, based upon rewrite rules,
5541        that incorporates these ideas, and many others from modern
5542        programming methodology.
5543    }
5544}
5545
5546@inproceedings{c++:templates,
5547    author      = {Bjarne Stroustrup},
5548    contributer = {gjditchfield@plg},
5549    title       = {Parameterized Types for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5550    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
5551    organization= {USENIX Association},
5552    year        = 1988, pages = {1-18}
5553}
5554
5555@inproceedings{Boehm85,
5556    keywords    = {second-order unification},
5557    contributer = {gjditchfield@plg},
5558    author      = {Hans-J. Boehm},
5559    title       = {Partial Polymorphic Type Inference is Undecidable},
5560    booktitle   = {26th Annual Symposium on Foundations of Computer Science},
5561    year        = 1985,
5562    pages       = {339-345},
5563    organization= {IEEE Computer Society},
5564    publisher   = {IEEE Computer Society Press},
5565    address     = {1730 Massachusetts Avenue, N.W, Washington, D.C. 20036-1903},
5566    summary     = {
5567        Given a base typed lambda calculus with function types, type
5568        abstractions, and a recursive expression \(\mbox{fix } x:t.e\),
5569        then type inference for the partially typed language
5570        \begin{eqnarray}
5571        \lambda x:\tau.e        &\Rightarrow& \lambda x.e       \\
5572        \mbox{fix } x:\tau.e    &\Rightarrow& \mbox{fix } x.e   \\
5573        e \tau                  &\Rightarrow& e ?
5574        \end{eqnarray}
5575        is undecidable.
5576    }
5577}
5578
5579@book{Pascal,
5580    keywords    = {Pascal},
5581    contributer = {pabuhr@plg},
5582    author      = {Kathleen Jensen and Niklaus Wirth},
5583    title       = {{P}ascal User Manual and Report, ISO Pascal Standard},
5584    publisher   = {Springer--Verlag},
5585    year        = 1991,
5586    edition     = {4th},
5587    note        = {Revised by Andrew B. Mickel and James F. Miner}
5588}
5589
5590@book{Pascal:old,
5591    keywords    = {Pascal},
5592    contributer = {pabuhr@plg},
5593    author      = {Kathleen Jensen and Niklaus Wirth},
5594    title       = {{P}ascal User Manual and Report},
5595    publisher   = {Springer--Verlag},
5596    year        = 1975,
5597    edition     = {1st},
5598}
5599
5600@article{Turba85,
5601    keywords    = {Pascal, exception handling, inheritance},
5602    contributer = {pabuhr@plg},
5603    author      = {Thomas N. Turba},
5604    title       = {The {P}ascal Exception Handling Proposal},
5605    journal     = sigplan,
5606    volume      = 20,
5607    number      = 8,
5608    month       = aug,
5609    year        = 1985,
5610    pages       = {93-98},
5611}
5612
5613@manual{Pascal/VS,
5614    keywords    = {PL/I},
5615    contributer = {pabuhr@plg},
5616    key         = {IBM},
5617    title       = {{P}ascal/{VS} Language Reference Manual},
5618    organization= {International Business Machines},
5619    edition     = {1st},
5620    year        = 1981,
5621    note        = {Manual SH20-6168-1},
5622}
5623
5624@misc{perf,
5625    contributer = {pabuhr@plg},
5626    key         = {perf},
5627    author      = {perf},
5628    howpublished= {\href{https://perf.wiki.kernel.org/index.php/Tutorial}{https://\-perf.wiki.kernel.org/\-index.php/\-Tutorial}},
5629}
5630
5631@misc{Verch12,
5632    contributer = {pabuhr@plg},
5633    author      = {Shaun Verch},
5634    title       = {Performance Analysis of 64-Bit Capriccio},
5635    month       = may,
5636    year        = 2012,
5637    howpublished= {\href{http://cs.brown.edu/research/pubs/theses/masters/2012/verch.pdf}{http://cs.brown.edu/\-research/\-pubs/\-theses/\-masters/\-2012/\-verch.pdf}},
5638}
5639
5640@article{Anderson90,
5641    keywords    = {spin locks, back off, performance},
5642    contributer = {pabuhr@plg},
5643    author      = {Thomas E. Anderson},
5644    title       = {The Performance of Spin Lock Alternatives for Shared-Memory Multiprocessors},
5645    journal     = ieeepds,
5646    month       = jan,
5647    year        = 1990,
5648    volume      = 1,
5649    number      = 1,
5650    pages       = {6-16},
5651}
5652
5653@inproceedings{Conchon07,
5654    keywords    = {persistent array, union-find},
5655    contributer = {a3moss@uwaterloo.ca},
5656    title       = {A persistent union-find data structure},
5657    author      = {Conchon, Sylvain and Filli{\^a}tre, Jean-Christophe},
5658    booktitle   = {Proceedings of the 2007 workshop on Workshop on ML},
5659    pages       = {37--46},
5660    year        = {2007},
5661    organization= {ACM}
5662}
5663
5664@article{poly,
5665    keywords    = {Poly, Standard ML, Russell, persistence},
5666    contributer = {gjditchfield@plg},
5667    author      = {David C. J. Matthews},
5668    title       = {Poly Manual},
5669    journal     = sigplan,
5670    month       = sep, year = 1985,
5671    volume      = 20, number = 9, pages = {52-76}
5672}
5673
5674@techreport{Atkinson87b,
5675    keywords    = {naming, persistence},
5676    contributer = {pabuhr@plg},
5677    author      = {M. P. Atkinson and R. Morrison},
5678    title       = {Polymorphic Names and Iterations},
5679    institution = {Universities of Glasgow and St. Andrews, Scotland},
5680    number      = {PPRR-53-87},
5681    month       = nov,
5682    year        = 1987,
5683}
5684
5685@book{Harland,
5686    keywords    = {},
5687    author      = {David M. Harland},
5688    title       = {Polymorphic Programming Languages: Design and Implementation},
5689    publisher   = {Ellis Horwood},
5690    year        = 1984,
5691    series      = {Computers and their Applications},
5692    address     = {Market Cross House, Cooper Street, Chichester, West Sussex, PO19 1EB, England},
5693    summary     = {
5694        The principles of Procedural Abstraction, Data Type Completeness,
5695        Declaration Correspondence, and Orthogonality are ruthlessly applied
5696        to the design of a polymorphic language.
5697    }
5698}
5699
5700@unpublished{poa,
5701    keywords    = {Force N, type inference, reusability, transcendance},
5702    contributer = {gjditchfield@plg},
5703    author      = {G. V. Cormack and A. K. Wright},
5704    title       = {Polymorphism, Overloading, and Abstraction},
5705    note        = {personal communication}
5706}
5707
5708@inproceedings{forceone:impl,
5709    keywords    = {Parametric polymorphism, ForceOne},
5710    contributer = {gjditchfield@plg},
5711    author      = {G. V. Cormack and A. K. Wright},
5712    title       = {Polymorphism in the Compiled Language {ForceOne}},
5713    booktitle   = {Proceedings of the 20th Hawaii International Conference on Systems Sciences},
5714    month       = jan,
5715    year        = 1987,
5716    pages       = {284-292},
5717}
5718
5719@incollection{POOL-T,
5720    keywords    = {objects, concurrency},
5721    contributer = {pabuhr@plg},
5722    author      = {Pierre America},
5723    title       = {POOL-T: A Parallel Object-Oriented Language},
5724    booktitle   = {Object-Oriented Concurrent Programming},
5725    publisher   = {The MIT Press},
5726    year        = 1987,
5727    pages       = {199-220},
5728    editor      = {Akinori Yonezawa and Mario Tokoro}
5729}
5730
5731@article{Hardgrave76,
5732    keywords    = {positional, keyword, parameters, arguments},
5733    contributer = {pabuhr@plg},
5734    author      = {W. T. Hardgrave},
5735    title       = {Positional versus Keyword Parameter Communication in Programming Languages},
5736    journal     = sigplan,
5737    volume      = 11,
5738    number      = 5,
5739    month       = may,
5740    year        = 1976,
5741    pages       = {52-58},
5742}
5743
5744@inproceedings{Rafkind09,
5745    keywords    = {accurate, C programming language, conservative, garbage collection, precise},
5746    contributer = {pabuhr@plg},
5747    author      = {Rafkind, Jon and Wick, Adam and Regehr, John and Flatt, Matthew},
5748    title       = {Precise Garbage Collection for C},
5749    booktitle   = {Proceedings of the 2009 International Symposium on Memory Management},
5750    series      = {ISMM '09},
5751    year        = {2009},
5752    location    = {Dublin, Ireland},
5753    pages       = {39-48},
5754    publisher   = {ACM},
5755    address     = {New York, NY, USA},
5756}
5757
5758@article{Ada:preliminary,
5759    keywords    = {Ada},
5760    contributer = {pabuhr@plg},
5761    author      = {Jean D. Ichbiah and Bernd Krieg-Brueckner and Brian A. Wichmann
5762                   and Henry F. Ledgard and Jean-Claude Heliard and Jean-Raymond Abrial
5763                   and John G. P. Barnes and Olivier Roubine},
5764    title       = {Preliminary {Ada} Reference Manual},
5765    journal     = sigplan,
5766    volume      = 14,
5767    number      = 6,
5768    month       = jun,
5769    year        = 1979,
5770    note        = {Part A},
5771}
5772
5773@techreport{Forsythe,
5774    author      = {John C. Reynolds},
5775    title       = {Preliminary Design of the Programming Language {Forsythe}},
5776    institution = {Carnegie Mellon University},
5777    number      = {CMU-CS-88-159},
5778    month       = jun,
5779    year        = 1988,
5780}
5781
5782@article{PRESTO,
5783    keywords    = {concurrency, threads},
5784    contributer = {dgharriss@plg},
5785    author      = {B. N. Bershad and E. D. Lazowska and H. M. Levy},
5786    title       = {{PRESTO}: A System for Object-oriented Parallel Programming},
5787    journal     = spe,
5788    volume      = 18,
5789    number      = 8,
5790    month       = aug,
5791    year        = 1988,
5792    pages       = {713-732}
5793}
5794
5795@book{Ben-Ari82,
5796    keywords    = {concurrency, parallel, programming languages},
5797    contributer = {pabuhr@plg},
5798    author      = {Mordechai Ben-Ari},
5799    title       = {Principles of Concurrent Programming},
5800    publisher   = {Prentice-Hall International},
5801    address     = {Englewood Cliffs},
5802    year        = 1982,
5803}
5804
5805@book{Tennent81,
5806    author      = {R. D. Tennent},
5807    title       = {Principles of Programming Languages},
5808    publisher   = {Prentice-Hall International},
5809    address     = {Englewood Cliffs},
5810    year        = 1981,
5811    series      = {Series in Computer Science}
5812}
5813
5814@article{Lister77,
5815    keywords    = {monitors, nested monitor calls},
5816    contributer = {pabuhr@plg},
5817    author      = {Andrew Lister},
5818    title       = {The Problem of Nested Monitor Calls},
5819    journal     = osr,
5820    volume      = 11,
5821    number      = 3,
5822    month       = jul,
5823    year        = 1977,
5824    pages       = {5-7},
5825}
5826
5827@article{psa:persistence,
5828    keywords    = {persistence, first-class procedures, closure, PS-Algol, Abstract Data Types},
5829    contributer = {gjditchfield@plg},
5830    author      = {Malcolm P. Atkinson and Ronald Morrison},
5831    title       = {Procedures as Persistent Data Objects},
5832    journal     = toplas,
5833    volume      = {7},    number = {4},
5834    pages       = {539-559},
5835    month       = oct, year = 1985,
5836    comment     = {
5837        PS-Algol has ``structures'', accessible only through ``pntrs''.
5838        Pntrs can refer to any type of structure.  Field references involve
5839        a run-time check.  This, plus first-class procedures, can simulate
5840        abstract data types.  Procedure variables operating on pntrs
5841        simulate ADT operations.  A block defines a structure to implement
5842        the ADT, and assigns procedures to the variables.  Functions
5843        returning structures containing procedures  simulate multiple
5844        implementations and parameterized ADTs.
5845
5846        An outer procedure that returns a procedure that contains
5847        (non-local) references to the outer procedure's parameters
5848        implements partial evaluation.
5849
5850        Modules can be simulated like ADT's.  The module itself is a
5851        structure instance that is placed in persistent storage, and the
5852        module is imported by fetching it from the persistent store.
5853        Multiple instances of modules are easy.  Installation of new
5854        versions can be done by replacing the version in the database.
5855    }
5856}
5857
5858@article{Procol89,
5859    keywords    = {active objects, object-oriented languages, object-based languages, explicit per-object protocol},
5860    contributer = {akgoel@plg},
5861    author      = {Jan van den Bos and Chris Laffra},
5862    title       = {PROCOL: A Parallel Object Language with Protocols},
5863    journal     = sigplan,
5864    volume      = 24,
5865    number      = 10,
5866    month       = oct,
5867    year        = 1989,
5868    pages       = {95-102},
5869    note        = {Proceedings of the OOPSLA'89 Conference, Oct. 1--6, 1989, New Orleans, Lousiana},
5870    abstract    = {},
5871}
5872
5873@inproceedings{Buhr98,
5874    keywords    = {profiling, monitoring, visualization},
5875    contributer = {pabuhr@plg},
5876    author      = {Peter A. Buhr and Robert Denda},
5877    title       = {{$\mu$Profiler} : Profiling User-Level Threads in a Shared-Memory Programming Environment},
5878    booktitle   = {Proc. of 2nd Inter. Symp. on Computing in Object-Oriented Parallel Environments},
5879    series      = {Lecture Notes in Computer Science},
5880    publisher   = {Springer-Verlag},
5881    volume      = 1505,
5882    opteditor   = {Dennis Caromel and Rodney R. Oldehoeft and Marydell Tholburn},
5883    address     = {Santa Fe, New Mexico, U.S.A.},
5884    month       = dec,
5885    year        = 1998,
5886    pages       = {159-166},
5887}
5888
5889@book{PowerPC,
5890    key         = {PowerPC processor},
5891    title       = {Programming Environments Manual for 32-Bit Implementations of the PowerPC ArchitectureARM Architecture},
5892    publisher   = {Freescale Semiconductor},
5893    volume      = {MPCFPE32B},
5894    edition     = {Rev. 3},
5895    month       = 9,
5896    year        = 2005,
5897}
5898
5899@book{Butenhof97,
5900    keywords    = {PThreads, concurrency},
5901    contributer = {pabuhr@plg},
5902    author      = {David R. Butenhof},
5903    title       = {Programming with {POSIX} Threads},
5904    publisher   = {Addison-Wesley},
5905    address     = {Boston},
5906    series      = {Professional Computing},
5907    year        = 1997,
5908}
5909
5910@book{SETL,
5911    keywords    = {SETL},
5912    contributer = {pabuhr@plg},
5913    author      = {J. T. Schwartz and R. B. K. Dewar and E. Dubinsky and E. Schonberg},
5914    title       = {Programming with Sets: An Introduction to {SETL}},
5915    publisher   = {Springer},
5916    address     = {New York, NY, USA},
5917    year        = 1986,
5918}
5919
5920@book{Genuys68,
5921    keywords    = {contains Dijkstra's Cooperating Sequential Processes},
5922    contributer = {pabuhr@plg},
5923    editor      = {F. Genuys},
5924    title       = {Programming Languages},
5925    publisher   = {Academic Press},
5926    address     = {London, New York},
5927    year        = 1968,
5928    note        = {NATO Advanced Study Institute, Villard-de-Lans, 1966}
5929}
5930
5931@manual{ANSI99:C,
5932    keywords    = {ANSI C 99},
5933    contributer = {pabuhr@plg},
5934    title       = {Programming Languages -- {C}},
5935    organization= {International Standard ISO/IEC 9899:1999 (E)},
5936    publisher   = {American National Standards Institute},
5937    address     = {www.ansi.org},
5938    year        = 1999,
5939}
5940
5941@manual{ANSI98:C++,
5942    keywords    = {ANSI C++ 98},
5943    contributer = {pabuhr@plg},
5944    key         = {C++98},
5945    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language ISO/IEC 14882:1998},
5946    edition     = {1st},
5947    publisher   = {International Standard Organization},
5948    address     = {\href{https://www.iso.org/standard/25845.html}{https://\-www.iso.org/\-standard/\-25845.html}},
5949    year        = 1998,
5950}
5951
5952@manual{C++14,
5953    keywords    = {ISO/IEC C++ 14},
5954    contributer = {pabuhr@plg},
5955    key         = {C++14},
5956    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language ISO/IEC 14882:2014},
5957    edition     = {4th},
5958    publisher   = {International Standard Organization},
5959    address     = {\href{https://www.iso.org/standard/64029.html}{https://\-www.iso.org/\-standard/\-64029.html}},
5960    year        = 2014,
5961}
5962
5963@manual{C++17,
5964    keywords    = {ISO/IEC C++ 17},
5965    contributer = {pabuhr@plg},
5966    key         = {C++17},
5967    title       = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language ISO/IEC 14882:2017},
5968    edition     = {5th},
5969    publisher   = {International Standard Organization},
5970    address     = {\href{https://www.iso.org/standard/68564.html}{https://\-www.iso.org/\-standard/\-68564.html}},
5971    year        = 2017,
5972}
5973
5974@manual{MS:VisualC++,
5975    keywords    = {Microsoft Visual C++},
5976    contributer = {pabuhr@plg},
5977    title       = {Microsoft Visual {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} .NET Language Reference},
5978    organization= {Microsoft Corporation},
5979    year        = 2002,
5980    note        = {Microsoft Press, Redmond, Washington, U.S.A.},
5981}
5982
5983@article{HasselBring00,
5984    keywords    = {concurrency, prototyping},
5985    contributer = {pabuhr@plg},
5986    author      = {Wilhelm Hasselbring},
5987    title       = {Programming Languages and Systems for Prototyping Concurrent Applications},
5988    journal     = acmcs,
5989    volume      = 32,
5990    number      = 1,
5991    month       = mar,
5992    year        = 2000,
5993    pages       = {43-79},
5994}
5995
5996@article{LLgen,
5997    keywords    = {ll(1), parser generator, separate compilation},
5998    contributer = {gjditchfield@plg},
5999    author      = {Dick Grune and Ceriel J. J. Jacobs},
6000    title       = {A Programmer-friendly LL(1) Parser Generator},
6001    journal     = spe,
6002    month       = jan, year = 1988,
6003    volume      = 18, number = 1, pages = {29-33},
6004    comment     = {
6005        LLgen generates C-language recursive-descent parsers.  The input
6006        contains procedure-like rules with alternation and repetition
6007        constructs on the right, and (typed) parameters on the left.
6008        C actions are specified between items in the right side.
6009        Alternation and repetition (reduce and shift) conflicts can be
6010        resolved statically or at run time.
6011
6012        A grammar can be specified in several files.  All files must be
6013        submitted to LLgen at once, but if the C file generated is no
6014        different from the old version, then the old version is not
6015        replaced and hence need not be recompiled, which saves lots of
6016        time.
6017
6018        When an incorrect token is found, the automatic error recovery
6019        algorithm discards tokens until an ``acceptable'' token is found;
6020        if the acceptable token is not correct, a correct one is inserted.
6021    }
6022}
6023
6024@techreport{russell,
6025    keywords    = {Russell},
6026    contributer = {gjditchfield@plg},
6027    author      = {H. Boehm and A. Demers and J. Donahue},
6028    title       = {A Programmer's Introduction to Russell},
6029    institution = {Rice University},
6030    year        = 1985,
6031    number      = {85-16}
6032}
6033
6034@techreport{PDM89,
6035    keywords    = {existential types, universal types},
6036    contributer = {gjditchfield@plg},
6037    author      = {Benjamin Pierce and Scott Dietzen and Spiro Michaylov},
6038    title       = {Programming in Higher-Order Typed Lambda Calculi},
6039    institution = {School of Computer Science, Carnegie Mellon University},
6040    year        = 1989,
6041    address     = {Pittsburg, PA 15213-3890},
6042    month       = mar, number = {CMU-CS-89-111},
6043    abstract    = {
6044        This tutorial presents a hierarchy of increasingly powerful
6045        languages, beginning with Church's simply typed
6046        \(\lambda\)-calculus (\(F_1\)) and the second-order polymorphic
6047        \(\lambda\)-calculus of Girard and Reynolds, and culminating in a
6048        fragment of Girard's \(\omega\)-order polymorphic
6049        \(\lambda\)-calculus (\(F_\omega\)).  Our focus throughout is on
6050        the unusual style of programming that arises in these languages,
6051        where all functions are total and the primary control construct is
6052        iteration rather than general recursion.
6053    }
6054}
6055
6056@book{Modula-2,
6057    keywords    = {modules, coroutines},
6058    contributer = {pabuhr},
6059    author      = {Niklaus Wirth},
6060    title       = {Programming in Modula-2},
6061    publisher   = {Springer},
6062    address     = {New York},
6063    year        = 1988,
6064    edition     = {4th},
6065    series      = {Texts and Monographs in Computer Science},
6066}
6067
6068@manual{Ada,
6069    keywords    = {Ada, packages, tasks, exceptions},
6070    contributer = {pabuhr@plg},
6071    title       = {The Programming Language {Ada}: Reference Manual},
6072    author      = {Ada},
6073    organization= {United States Department of Defense},
6074    edition     = {{ANSI/MIL-STD-1815A-1983}},
6075    month       = feb,
6076    year        = 1983,
6077    note        = {Springer, New York},
6078}
6079
6080@manual{ada:old,
6081    keywords    = {Ada, packages, tasks, exceptions},
6082    contributer = {gjditchfield@plg},
6083    title       = {The Programming Language {Ada}: Reference Manual},
6084    organization= {United States Department of Defense},
6085    publisher   = {Springer},
6086    year        = 1981
6087}
6088
6089@book{Ghezzi,
6090    keywords    = {},
6091    author      = {Carlo Ghezzi and Mehdi Jazayeri},
6092    title       = {Programming Language Concepts},
6093    publisher   = {Wiley},
6094    year        = 1982
6095}
6096
6097@article{ConcurrentPascal,
6098    keywords    = {Concurrent Pascal},
6099    contributer = {pabuhr@plg},
6100    author      = {Per {Brinch Hansen}},
6101    title       = {The Programming Language Concurrent Pascal},
6102    journal     = ieeese,
6103    volume      = 2,
6104    month       = jun,
6105    year        = 1975,
6106    pages       = {199-206}
6107}
6108
6109@phdthesis{Buhr85:thesis,
6110    keywords    = {},
6111    contributer = {pabuhr@plg},
6112    author      = {P. A. Buhr},
6113    title       = {A Programming System},
6114    school      = {University of Manitoba},
6115    year        = {1985}
6116}
6117
6118@techreport{pierce91,
6119    keywords    = {typed lambda calculus},
6120    contributer = {gjditchfield@plg},
6121    author      = {Benjamin C. Pierce},
6122    title       = {Programming with Intersection Types, Union Types, and Polymorphism},
6123    institution = {Carnegie Mellon University},
6124    year        = 1991,
6125    month       = feb,
6126    number      = {CMU-CS-91-106},
6127    annote      = {
6128        Discusses a typed lambda calculus with
6129        \begin{itemize}
6130        \item
6131        Intersection types \(\tau = \tau_1\wedge\tau_2\) with \(\tau \le
6132        \tau_i\) for all \(i\).
6133        \item
6134        Union types \(\tau = \tau_1\vee\tau_2\) with \(\tau_i \le \tau\),
6135        and with implicit coercions from \(tau_i\) to \(\tau\).  Only
6136        operations valid for both element types can be applied to the
6137        union; there are no projections.  Union types are to variant
6138        records as set union is to disjoint set union.
6139        \item
6140        Function types and universal quantification, with subtyping rules.
6141        When functions and arguments intersections, the result of
6142        application is the intersection of all valid combinations.
6143        \item
6144        Distribution rules for combinations of types.
6145        \item
6146        "Union elimination": "case \(x = e\) of \(e'\)", where \(e\) is a
6147        union, has type \(\tau\) if \(e'\) has that type with \(x\) having
6148        every element type of the union.
6149        \item
6150        "Finitary quantification": "for \(t\) in \(\tau_1,\ldots,\tau_n.e\)"
6151        typechecks \(e\) with \(t\) bound to each choice, and intersects
6152        the results.
6153        \end{itemize}
6154
6155        Examples include: type of "natural" numbers, treated as a union of
6156        "zero" and "positive" types; default parameters, faked by using an
6157        argument that is an intersection of a data type and a function
6158        taking an explicit argument.
6159
6160        Unions can be mostly faked, according to Mitchell:
6161        \[\tau_1\vee\tau_2 \equiv
6162             \forall\tau.(\tau_1\on\tau)\wedge(\tau_2\on\tau)\]
6163    }
6164}
6165
6166@article{Moore75,
6167    keywords    = {approximation methods, integrated circuits},
6168    contributer = {pabuhr@plg},
6169    author      = {Gordon E. Moore},
6170    title       = {Progress in Digital Integrated Electronics},
6171    journal     = {Technical Digest, International Electron Devices Meeting, IEEE},
6172    year        = 1975,
6173    pages       = {11-13},
6174}
6175
6176@article{promises,
6177    keywords    = {futures, Argus, call streams, rpc},
6178    contributer = {gjditchfield@plg},
6179    author      = {Barbara Liskov and Liuba Shrira},
6180    title       = {Promises: Linguistic Support for Efficient Asynchronous Procedure Calls in Distributed Systems},
6181    journal     = sigplan,
6182    year        = 1988,
6183    month       = jul,
6184    volume      = 23,
6185    number      = 7,
6186    pages       = {260-267},
6187    note        = {Proceedings of the SIGPLAN '88 Conference on Programming Language Design and Implementation},
6188    abstract    = {
6189        This paper deals with the integration of an efficient asynchronous
6190        remote procedure call mechanism into a programming language.  It
6191        describes a new data type called a {\em promise} that was designed
6192        to support asynchronous calls.  Promises allow a caller to run in
6193        parallel with a call and to pick up the results of the call,
6194        including any exceptions it raises, in a convenient and type-safe
6195        manner.  The paper also discusses efficient composition of
6196        sequences of asynchronous calls to different locations in a
6197        network.
6198    }
6199}
6200
6201@article{Cook89,
6202    keywords    = {},
6203    contributer = {gjditchfield@plg},
6204    author      = {W. R. Cook},
6205    title       = {A Proposal for Making {Eiffel} Type-safe},
6206    journal     = {The Computer Journal},
6207    year        = 1989,
6208    volume      = 32, number = 4, pages = {305-311},
6209    abstract    = {
6210       
6211    }
6212}
6213
6214@inproceedings{Foxall79,
6215    keywords    = {},
6216    contributer = {pabuhr@plg},
6217    author      = {D. G. Foxall and M. L. Joliat and R. F. Kamel and J. J. Miceli},
6218    title       = {{PROTEL}: A High Level Language for Telephony},
6219    booktitle   = {Proceedings 3rd International Computer Software and Applications Conference},
6220    month       = nov,
6221    year        = 1979,
6222    pages       = {193-197},
6223}
6224
6225@techreport{PS-Algol,
6226    keywords    = {algol, persistence},
6227    contributer = {pabuhr@plg},
6228    key         = {PS-Algol},
6229    title       = {The {PS-Algol} Reference Manual, 4th Ed.},
6230    author      = {},
6231    institution = {University of Glasgow and St. Andrews, Scotland},
6232    number      = {PPRR 12},
6233    month       = jun,
6234    year        = 1987,
6235}
6236
6237@misc{Pthreads,
6238    keywords    = {pthreads, C concurrency},
6239    contributer = {pabuhr@plg},
6240    key         = {pthreads},
6241    title       = {{Pthread}.h, Specifications Issue 7, {IEEE} Std 1003.1-2017},
6242    author      = {IEEE and {The Open Group}},
6243    year        = 2018,
6244    howpublished= {\href{http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/pthread.h.html}
6245                  {http://\-pubs.opengroup.org/\-onlinepubs/\-9699919799/\-basedefs/\-pthread.h.html}},
6246}
6247
6248@manual{Python,
6249    keywords    = {Python},
6250    contributer = {pabuhr@plg},
6251    author      = {Python},
6252    title       = {Python Language Reference, Release 3.7.2},
6253    organization= {Python Software Foundation},
6254    address     = {\href{https://docs.python.org/3/reference/index.html}{https://\-docs.python.org/\-3/\-reference/\-index.html}},
6255    year        = 2018,
6256}
6257
6258% Q
6259
6260@inproceedings{Qthreads,
6261    keywords    = {user-level threading},
6262    author      = {Kyle B. Wheeler and Richard C. Murphy and Douglas Thain},
6263    title       = {Qthreads: An API for Programming with Millions of Lightweight Threads},
6264    booktitle   = {International Symposium on Parallel and Distributed Processing},
6265    organization= {IEEE},
6266    address     = {Miami, FL, USA},
6267    month       = apr,
6268    year        = 2008,
6269}
6270
6271@article{Grossman06,
6272    keywords    = {Cyclone, existential types, polymorphism, type variables},
6273    contributer = {a3moss@plg},
6274    author      = {Dan Grossman},
6275    title       = {Quantified Types in an Imperative Language},
6276    journal     = toplas,
6277    issue_date  = {May 2006},
6278    volume      = {28},
6279    number      = {3},
6280    month       = may,
6281    year        = 2006,
6282    issn        = {0164-0925},
6283    pages       = {429-475},
6284    url         = {http://doi.acm.org/10.1145/1133651.1133653},
6285    doi         = {10.1145/1133651.1133653},
6286    acmid       = {1133653},
6287    publisher   = {ACM},
6288    address     = {New York, NY, USA},
6289}
6290
6291@article{Nakaike15,
6292    keywords    = {hardware transactional memory},
6293    contributer = {pabuhr@plg},
6294    author      = {Nakaike, Takuya and Odaira, Rei and Gaudet, Matthew and Michael, Maged M. and Tomari, Hisanobu},
6295    title       = {Quantitative Comparison of Hardware Transactional Memory for Blue Gene/Q, zEnterprise {EC12}, {I}ntel Core, and {POWER8}},
6296    journal     = {SIGARCH Comput. Archit. News},
6297    volume      = {43},
6298    number      = {3},
6299    month       = jun,
6300    year        = {2015},
6301    pages       = {144--157},
6302    publisher   = {ACM},
6303    address     = {New York, NY, USA},
6304}
6305
6306@manual{Quasar,
6307    keywords    = {Quasar},
6308    contributer = {pabuhr@plg},
6309    author      = {Quasar},
6310    title       = {Quasar Documentation, Release 0.8.0},
6311    organization= {Parallel Universe},
6312    address     = {\href{http://docs.paralleluniverse.co/quasar}{http://\-docs.paralleluniverse.co/\-quasar}},
6313    year        = 2018,
6314}
6315
6316% R
6317
6318@article{Ada:rationale:preliminary,
6319    keywords    = {Ada},
6320    contributer = {pabuhr@plg},
6321    author      = {J. D. Ichbiah and J. C. Heliard and O. Roubine and
6322                   J. G. P. Barnes and B. Krieg-Brueckner and B. A. Wichmann},
6323    title       = {Rationale for the Design of the {ADA} Programming Language},
6324    journal     = sigplan,
6325    volume      = 14,
6326    number      = 6,
6327    month       = jun,
6328    year        = 1979,
6329    note        = {Part B},
6330}
6331
6332@book{Ada:rationale,
6333    keywords    = {Ada},
6334    contributer = {pabuhr@plg},
6335    author      = {Jean D. Ichbiah and John G. P. Barnes and Robert J. Firth and Mike Woodger},
6336    title       = {Rationale for the Design of the {ADA} Programming Language},
6337    publisher   = {Under Secretary of Defense, Research and Engineering},
6338    year        = 1986,
6339    address     = {Ada Joint Program Office, OUSDRE(R\&AT), The Pentagon, Washington, D. C., 20301, U.S.A.},
6340}
6341
6342@manual{Ada95,
6343    keywords    = {Ada},
6344    contributer = {pabuhr@plg},
6345    title       = {{A}da Reference Manual},
6346    edition     = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
6347    organization= {Intermetrics, Inc.},
6348    month       = dec,
6349    year        = 1995,
6350    note        = {Language and Standards Libraries}
6351}
6352
6353@manual{Ada12,
6354    keywords    = {ISO/IEC Ada},
6355    contributer = {pabuhr@plg},
6356    author      = {Ada12},
6357    title       = {Programming languages -- {Ada} ISO/IEC 8652:2012},
6358    edition     = {3rd},
6359    publisher   = {International Standard Organization},
6360    address     = {\href{https://www.iso.org/standard/61507.html}{https://\-www.iso.org/\-standard/\-61507.html}},
6361    year        = 2012,
6362}
6363
6364@manual{Ada95:annotated,
6365    keywords    = {Ada},
6366    contributer = {pabuhr@plg},
6367    title       = {Annotated {A}da Reference Manual},
6368    edition     = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
6369    organization = {Intermetrics, Inc.},
6370    month       = dec,
6371    year        = 1995,
6372    note        = {Language and Standards Libraries}
6373}
6374
6375@book{JavaRT00,
6376    keywords    = {real time, draft},
6377    contributer = {pabuhr@plg},
6378    author      = {Greg Bollella and Ben Brosgol and Peter Dibble and Steve Furr and James Gosling and David Hardin and Mark Turnbull},
6379    title       = {The Real-Time Specification for {J}ava},
6380    series      = {The Real-Time for Java Expert Group, {\small\textsf{http://\-www.rtj.org}}},
6381    publisher   = {Addison-Wesley},
6382    address     = {Boston},
6383    year        = 2000,
6384}
6385
6386@manual{JavaRT99,
6387    organization= {Real Time for Java Experts Group},
6388    address     = {{\small\textsf{http://\-www.rtj.org}}},
6389    month       = sep,
6390    year        = 1999,
6391}
6392
6393@article{Ronsse03,
6394    keywords    = {profiling, replay},
6395    contributer = {pabuhr@plg},
6396    author      = {Michiel Ronsse and De Bosschere, Koen and Mark Christiaens and Jacques Chassin de Kergommeaux and Dieter Kranzlm\"{u}ller},
6397    title       = {Record/Replay for Nondeterministic Program Executions},
6398    journal     = cacm,
6399    month       = sep,
6400    year        = 2003,
6401    volume      = 46,
6402    number      = 9,
6403    pages       = {62-67},
6404}
6405
6406@article{Robinson48,
6407    keywords    = {recursion, Ackermann function},
6408    contributer = {pabuhr@plg},
6409    author      = {Raphael Mitchel Robinson},
6410    title       = {Recursion and Double Recursion},
6411    publisher   = {American Mathematical Society},
6412    journal     = {Bulletin of the American Mathematical Society},
6413    volume      = 54,
6414    pages       = {987-993},
6415    year        = 1948,
6416}
6417
6418@article{Dijkstra:red,
6419    keywords    = {ada},
6420    contributer = {gjditchfield@plg},
6421    author      = {Edsger W. Dijkstra},
6422    title       = {On the RED Language submitted to the DoD},
6423    journal     = sigplan,
6424    year        = 1978,
6425    month       = oct,
6426    volume      = 13,
6427    number      = 10,
6428    pages       = {27-32},
6429}
6430
6431@article{Hesselink06,
6432    author      = {Wim H. Hesselink},
6433    title       = {Refinement Verification of the Lazy Caching Algorithm},
6434    journal     = acta,
6435    year        = 2006,
6436    month       = oct,
6437    volume      = 43,
6438    number      = 3,
6439    pages       = {195--222},
6440}
6441
6442@article{RemoteRendezvous,
6443    keywords    = {rendezvous, concurrency},
6444    contributer = {pabuhr@plg},
6445    author      = {N. D. Gammage and R. F. Kamel and L. M. Casey},
6446    title       = {Remote Rendezvous},
6447    journal     = spe,
6448    month       = oct,
6449    year        = 1987,
6450    volume      = 17,
6451    number      = 10,
6452    pages       = {741-755}
6453}
6454
6455@mastersthesis{Schuster99,
6456    author      = {Oliver Schuster},
6457    title       = {Replay of Concurrent Shared-Memory Programs},
6458    school      = {Universit\"at Mannheim},
6459    address     = {Mannheim, Deutschland},
6460    year        = 1999,
6461    month       = apr,
6462    type        = {Diplomarbeit},
6463    note        = {\href{https://plg.uwaterloo.ca/~usystem/theses/SchusterThesis.pdf}{https://\-plg.uwaterloo.ca/\-$\sim$usystem/\-theses/\-SchusterThesis.pdf}},
6464}
6465
6466@article{Euclid,
6467    keywords    = {Euclid},
6468    contributer = {pabuhr@plg},
6469    author      = {B. W. Lampson and J. J. Horning and R. L. London and J. G. Mitchell and G. L. Popek},
6470    title       = {Report on the Programming Language Euclid},
6471    journal     = sigplan,
6472    volume      = 12,
6473    number      = 2,
6474    month       = feb,
6475    year        = 1977,
6476    pages       = {1-79}
6477}
6478
6479@techreport{LOGLAN88,
6480    keywords    = {LOGLAN},
6481    contributer = {pabuhr@plg},
6482    author      = {Boleslaw Ciesielski and Antoni Kreczmar and Marek Lao and Andrzej Litwiniuk and Teresa Przytycka and Andrzej Salwicki and Jolanta Warpechowska and Marek Warpechowski and Andrzej Szalas and Danuta Szczepanska--Wasersztrum},
6483    title       = {Report on the Programming Language LOGLAN'88},
6484    institution = {Institute of Informatics, University of Warsaw},
6485    address     = {Pkin 8th Floor, 00-901 Warsaw, Poland},
6486    number      = {},
6487    month       = dec,
6488    year        = 1988,
6489}
6490
6491@mastersthesis{Schluntz17,
6492    keywords    = {constructors, destructors, tuples},
6493    author      = {Robert Schluntz},
6494    title       = {Resource Management and Tuples in \textsf{C}$\mathbf{\forall}$},
6495    school      = {School of Computer Science, University of Waterloo},
6496    year        = 2017,
6497    optaddress  = {Waterloo, Ontario, Canada, N2L 3G1},
6498    note        = {\href{https://uwspace.uwaterloo.ca/handle/10012/11830}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-11830}},
6499}
6500
6501@article{FH91,
6502    keywords    = {lcc},
6503    contributer = {gjditchfield@plg},
6504    author      = {Christopher W. Fraser and David R. Hanson},
6505    title       = {A Retargetable Compiler for {ANSI} {C}},
6506    journal     = sigplan,
6507    year        = 1991,
6508    month       = oct, volume = 26, number = 10, pages = {29-43},
6509    abstract    = {
6510        {\tt lcc} is a new retargetable compiler for ANSI C.  Versions for
6511        the VAX, Motorola 68020, SPARC, and MIPS are in production use at
6512        Princeton University and at AT\&T Bell Laboratories.  With a few
6513        exceptions, little about {\tt lcc} is unusual---it integrates
6514        several well engineered, existing techniques---but it is smaller
6515        and faster than most other C compilers, and it generates code of
6516        comparable quality.  {\tt lcc}'s target-independent front end
6517        performs a few simple, but effective, optimizations that contribute
6518        to good code; examples include simulating register declarations and
6519        partitioning switch statements into dense tables.  It also
6520        implements target-independent function tracing and expression-level
6521        profiling.
6522    }
6523}
6524
6525@article{Algol68revised,
6526    keywords    = {},
6527    contributer = {gjditchfield@plg},
6528    author      = {A. van Wijngaarden and B. J. Mailloux and J. E. L. Peck and
6529        C. H. A. Koster and M. Sintzoff and C. H. Lindsey and L. G. L. T.
6530        Meertens and R. G. Fisher},
6531    title       = {Revised Report on the Algorithmic Language {ALGOL} 68},
6532    journal     = sigplan,
6533    year        = 1977,
6534    month       = may,
6535    volume      = 12,
6536    number      = 5,
6537    pages       = {1-70}
6538}
6539
6540@article{scheme,
6541    keywords    = {},
6542    contributer = {gjditchfield@plg},
6543    author      = {Jonathan Rees and William Clinger},
6544    title       = {Revised$^3$ Report on the Algorithmic Language {S}cheme},
6545    journal     = sigplan,
6546    year        = 1986,
6547    month       = dec,
6548    volume      = 21,
6549    number      = 12,
6550    pages       = {37-79},
6551}
6552
6553@article{scheme5,
6554    keywords    = {scheme},
6555    contributer = {pabuhr@plg},
6556    author      = {H. Abelson and Adams, IV, N. I. and D. H. Bartley and G. Brooks and R. K. Dybvig and D. P. Friedman and
6557                   R. Halstead and C. Hanson and C. T. Haynes and E. Kohlbecker and D. Oxley and K. M. Pitman and G. J. Rozas and
6558                   G. L. Steele Jr. and G. J. Sussman and M. Wand and \emph{Ed. by} Richard Kelsey and William Clinger and Jonathan Rees},
6559    title       = {Revised$^5$ Report on the Algorithmic Language {S}cheme},
6560    journal     = sigplan,
6561    year        = 1998,
6562    month       = sep,
6563    volume      = 33,
6564    number      = 9,
6565    pages       = {26-76},
6566}
6567
6568@manual{Rust,
6569    keywords    = {Rust programming language},
6570    contributer = {pabuhr@plg},
6571    key         = {Rust},
6572    title       = {{R}ust Programming Language},
6573    optaddress  = {Rust Project Developers},
6574    year        = 2015,
6575    note        = {\href{https://doc.rust-lang.org/reference.html}{https://\-doc.rust-lang\-.org/\-reference.html}},
6576}
6577
6578@manual{Ruby,
6579    keywords    = {Ruby},
6580    contributer = {pabuhr@plg},
6581    author      = {Ruby},
6582    title       = {Ruby Documentation, Release 2.6.0},
6583    organization= {Python Software Foundation},
6584    address     = {\href{https://www.ruby-lang.org/en/documentation}{https://\-www.ruby-lang.org/\-en/\-documentation}},
6585    year        = 2018,
6586}
6587
6588% S
6589
6590@manual{Scala,
6591    keywords    = {Scala programming language},
6592    contributer = {pabuhr@plg},
6593    key         = {Scala},
6594    title       = {{S}cala Language Specification, Version 2.11},
6595    address     = {\'{E}cole Polytechnique F\'{e}d\'{e}rale de Lausanne},
6596    year        = 2016,
6597    note        = {\href{http://www.scala-lang.org/files/archive/spec/2.11}{http://\-www.scala-lang.org/\-files/\-archive/\-spec/\-2.11}},
6598}
6599
6600@inproceedings{Michael04,
6601    keywords    = {lock free, dynamic memory allocation},
6602    contributer = {pabuhr@plg},
6603    author      = {Maged M. Michael},
6604    title       = {Scalable Lock-free Dynamic Memory Allocation},
6605    booktitle   = {PLDI '04: Proceedings of the ACM SIGPLAN 2004 Conference on Programming Language Design and Implementation},
6606    location    = {Washington DC, USA},
6607    publisher   = {ACM},
6608    address     = {New York, NY, USA},
6609    volume      = 39,
6610    year        = 2004,
6611    month       = jun,
6612    pages       = {35-46},
6613}
6614
6615@article{Anderson92,
6616    keywords    = {light-weight tasks},
6617    contributer = {pabuhr@plg},
6618    author      = {Thomas E. Anderson and Brian N. Bershad and Edward D. Lazowska and Henry M. Levy},
6619    title       = {Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism},
6620    journal     = tocs,
6621    volume      = 10,
6622    number      = 1,
6623    month       = feb,
6624    year        = 1992,
6625    pages       = {53-79},
6626}
6627
6628@manual{SELF,
6629    keywords    = {programming language, obect-oriented, polymorphism},
6630    contributer = {pabuhr@plg},
6631    author      = {Ole Agesen and Lars Bak and Craig Chambers and Bay-Wei Chang and Urs H{\o}lzle
6632                   and John H. Maloney and Randall B. Smith and David Ungar and Mario Wolczko},
6633    title       = {The {SELF} 3.0 Programmer's Reference Manual},
6634    organization= {Sun Microsystems, Inc., and Stanford University},
6635    year        = 1993,
6636}
6637
6638@inproceedings{Cardelli84,
6639    keywords    = {subtypes, recursive types, records, variants, object oriented},
6640    contributer = {gjditchfield@plg},
6641    author      = {Luca Cardelli},
6642    title       = {A Semantics of Multiple Inheritance},
6643    booktitle   = {Semantics of Data Types},
6644    year        = 1984,
6645    pages       = {51-67},
6646    editor      = {G. Kahn and D. B. MacQueen and G. D. Plotkin},
6647    publisher   = {Springer},
6648    note        = {Lecture Notes in Computer Science v. 173},
6649}
6650
6651@article{Baker78,
6652    keywords    = {Algol display, FUNARG's, Lisp 1.5, deep binding, environment trees, multiprogramming, shallow binding},
6653    contributer = {a3moss@uwaterloo.ca},
6654    author      = {Baker,Jr., Henry G.},
6655    title       = {Shallow Binding in Lisp 1.5},
6656    journal     = {Commun. ACM},
6657    issue_date  = {July 1978},
6658    volume      = 21,
6659    number      = 7,
6660    month       = jul,
6661    year        = 1978,
6662    issn        = {0001-0782},
6663    pages       = {565--569},
6664    numpages    = {5},
6665    url         = {http://doi.acm.org/10.1145/359545.359566},
6666    doi         = {10.1145/359545.359566},
6667    acmid       = {359566},
6668    publisher   = {ACM},
6669    address     = {New York, NY, USA}
6670}
6671
6672@article{Baker91,
6673    keywords    = {shallow binding, functional arrays},
6674    contributer = {a3moss@uwaterloo.ca},
6675    author      = {Baker, Henry G.},
6676    title       = {Shallow Binding Makes Functional Arrays Fast},
6677    journal     = {SIGPLAN Not.},
6678    issue_date  = {Aug. 1991},
6679    volume      = 26,
6680    number      = 8,
6681    month       = aug,
6682    year        = 1991,
6683    issn        = {0362-1340},
6684    pages       = {145--147},
6685    numpages    = {3},
6686    url         = {http://doi.acm.org/10.1145/122598.122614},
6687    doi         = {10.1145/122598.122614},
6688    acmid       = {122614},
6689    publisher   = {ACM},
6690    address     = {New York, NY, USA},
6691}
6692
6693@techreport{Adve95,
6694    keywords    = {shared memory, consistency models},
6695    contributer = {pabuhr@plg},
6696    author      = {Sarita V. Adve and Kourosh Gharachorloo},
6697    title       = {Shared Memory Consistency Models: A Tutorial},
6698    institution = {Western Research Laboratory},
6699    address     = {250 University Avenue, Palo Alto, California, 94301, U.S.A.},
6700    number      = {7},
6701    month       = sep,
6702    year        = 1995,
6703    note        = {\href{http://www.hpl.hp.com/techreports/Compaq-DEC/WRL-95-7.pdf}{http://www.hpl.hp.com/\-techreports/\-Compaq-DEC/\-WRL-95-7.pdf}, Reprinted in \cite{Adve95reprint}.},
6704}
6705
6706@article{Adve95reprint,
6707    keywords    = {shared memory, consistency models},
6708    contributer = {pabuhr@plg},
6709    author      = {Sarita V. Adve and Kourosh Gharachorloo},
6710    journal     = {Computer},
6711    title       = {Shared Memory Consistency Models: A Tutorial},
6712    month       = dec,
6713    year        = 1996,
6714    volume      = 29,
6715    number      = 12,
6716    pages       = {66-76},
6717}
6718
6719@article{Nickolls08,
6720    author      = {Nickolls, John and Buck, Ian and Garland, Michael and Skadron, Kevin},
6721    title       = {Scalable Parallel Programming with CUDA},
6722    journal     = {Queue},
6723    volume      = {6},
6724    number      = {2},
6725    month       = mar,
6726    year        = 2008,
6727    pages       = {40-53},
6728    publisher   = {ACM},
6729    address     = {New York, NY, USA},
6730} 
6731
6732@inproceedings{Leissa14,
6733    title       = {{S}ierra: a {SIMD} extension for {C}++},
6734    author      = {Lei{\ss}a, Roland and Haffner, Immanuel and Hack, Sebastian},
6735    booktitle   = {Proceedings of the 2014 Workshop on Workshop on programming models for SIMD/Vector processing},
6736    pages       = {17-24},
6737    year        = {2014},
6738    organization= {ACM}
6739}
6740
6741@inproceedings{Howard76b,
6742    keywords    = {monitors},
6743    contributer = {pabuhr@plg},
6744    author      = {J. H. Howard},
6745    title       = {Signaling in Monitors},
6746    booktitle   = {Proceedings Second International Conference Software Engineering},
6747    address     = {San Francisco, U.S.A},
6748    publisher   = {IEEE Computer Society},
6749    month       = oct,
6750    year        = 1976,
6751    pages       = {47-52}
6752}
6753
6754@techreport{Schemenauer01,
6755    keywords    = {Phthon, generator, coroutine},
6756    contributer = {pabuhr@plg},
6757    author      = {Neil Schemenauer and Tim Peters and Magnus Lie Hetland},
6758    title       = {Simple Generators},
6759    month       = may,
6760    year        = 2001,
6761    note        = {\href{http://www.python.org/peps/pep-0255.html}{http://\-www.python.org/\-peps/\-pep-0255.html}},
6762}
6763
6764@inproceedings{Michael96,
6765    keywords    = {compare_and_swap, concurrent queue, lock-free, multiprogramming, non-blocking},
6766    contributer = {pabuhr@plg},
6767    author      = {Maged M. Michael and Michael L. Scott},
6768    title       = {Simple, Fast, and Practical Non-blocking and Blocking Concurrent Queue Algorithms},
6769    booktitle   = {Proceedings of the Fifteenth Annual ACM Symposium on Principles of Distributed Computing},
6770    series      = {PODC'96},
6771    year        = 1996,
6772    location    = {Philadelphia, Pennsylvania, USA},
6773    pages       = {267--275},
6774    numpages    = {9},
6775    publisher   = {ACM},
6776    address     = {New York, NY, USA},
6777}
6778
6779@article{Pennello80,
6780    contributer = {a3moss@uwaterloo.ca},
6781    author      = {Pennello, Tom and DeRemer, Frank and Meyers, Richard},
6782    title       = {A Simplified Operator Identification Scheme for {Ada}},
6783    journal     = {SIGPLAN Notices},
6784    issue_date  = {July-August 1980},
6785    volume      = {15},
6786    number      = {7 and 8},
6787    month       = jul,
6788    year        = {1980},
6789    issn        = {0362-1340},
6790    pages       = {82--87},
6791    numpages    = {6},
6792    url         = {http://doi.acm.org/10.1145/947680.947688},
6793    doi         = {10.1145/947680.947688},
6794    publisher   = {ACM},
6795    address     = {New York, NY, USA},
6796}
6797
6798@inproceedings{Dice10,
6799    keywords    = {hardware, synchronization, transactional memory},
6800    author      = {Dave Dice and Yossi Lev and Virendra J. Marathe and Mark Moir and Dan Nussbaum and Marek Olszewski},
6801    title       = {Simplifying Concurrent Algorithms by Exploiting Hardware Transactional Memory},
6802    booktitle   = {Proceedings of the Twenty-second Annual ACM Symposium on Parallelism in Algorithms and Architectures},
6803    series      = {SPAA'10},
6804    year        = 2010,
6805    location    = {Thira, Santorini, Greece},
6806    pages       = {325-334},
6807    numpages    = {10},
6808    publisher   = {ACM},
6809    address     = {New York, NY, USA},
6810}
6811
6812@article{PDM:overload,
6813    keywords    = {compilation},
6814    contributer = {gjditchfield@plg},
6815    author      = {Tom Pennello and Frank DeRemer and Richard Meyers},
6816    title       = {A Simplified Operator Identification Scheme for {Ada}},
6817    journal     = sigplan,
6818    year        = 1980,
6819    month       = {July--August},
6820    volume      = 15,
6821    number      = {7/8},
6822    pages       = {82-87},
6823    comment     = {
6824        The two-pass (bottom-up, top-down) overload resolution algorithm
6825        for Ada, with a proof that two passes suffice and a claim that two
6826        are necessary.  See \cite{D:overload}.
6827    }
6828}
6829
6830@book{SimulaBegin,
6831    author      = {Graham M. Birtwistle and Ole-Johan Dahl and Bj{\o}rn Myhrhaug and Kristen Nygaard},
6832    title       = {{SIMULA} begin},
6833    publisher   = {Studentlitteratur},
6834    year        = {1980},
6835    address     = {Lund, Sweden},
6836    edition     = {2nd},
6837}
6838
6839@book{Simula67,
6840    author      = {O-J Dahl and B. Myhrhaug and K. Nygaard},
6841    title       = {Simula67 Common Base Language},
6842    month       = oct,
6843    year        = 1970,
6844    publisher   = {Norwegian Com\-puting Center},
6845    address     = {Oslo Norway},
6846}
6847
6848@book{smalltalk,
6849    keywords    = {Smalltalk, abstract class, protocol},
6850    contributer = {gjditchfield@plg},
6851    author      = {A. Goldberg and D. Robson}, 
6852    title       = {Smalltalk-80: The Language and its Implementation},
6853    publisher   = {Addison-Wesley},
6854    address     = {Reading},
6855    year        = 1983
6856}
6857
6858@inproceedings{Edelson92,
6859    keywords    = {persistence, pointers},
6860    contributer = {pabuhr@plg},
6861    author      = {Daniel R. Edelson},
6862    title       = {Smart Pointers: They're Smart, but They're Not Pointers},
6863    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Technical Conference Proceedings},
6864    organization= {USENIX Association},
6865    address     = {Portland, Oregon, U.S.A.},
6866    month       = aug,
6867    year        = 1992,
6868    pages       = {1-19},
6869}
6870
6871@book{SNOBOL,
6872    keywords    = {SNOBOL4},
6873    contributer = {pabuhr@plg},
6874    author      = {R. E. Griswold and J. F. Poage and I. P. Polonsky},
6875    title       = {The SNOBOL4 Programming Language},
6876    edition     = {2nd},
6877    publisher   = {Prentice-Hall},
6878    address     = {Englewood Cliffs},
6879    year        = 1971,
6880}
6881
6882@article{Sutter05b,
6883    keywords    = {concurrency},
6884    contributer = {pabuhr@plg},
6885    author      = {Herb Sutter and James Larus},
6886    title       = {Software and the Concurrency Revolution},
6887    journal     = {Queue},
6888    year        = 2005,
6889    month       = sep,
6890    volume      = 3,
6891    number      = 7,
6892    pages       = {54-62},
6893}
6894
6895@inproceedings{raytheon,
6896    keywords    = {cobol},
6897    contributer = {gjditchfield@plg},
6898    author      = {Robert G. Lanergan and Charles A. Grasso},
6899    title       = {Software Engineering with Reusable Designs and Code},
6900    booktitle   = {Workshop on Reusability in Programming},
6901    year        = 1983,
6902    month       = sep,
6903    pages       = {224-234},
6904    organization= {{ITT} Programming},
6905    summary     = {
6906        60\% of business application design and code are redundant.
6907        Three standard program plans are used.  Reuse doubles productivity
6908        during development and greatly helps program comprehension during
6909        maintenance.
6910    }
6911}
6912
6913@article{Hecht86,
6914    keywords    = {exception handling, robustness},
6915    contributer = {pabuhr@plg},
6916    author      = {H. Hecht and M. Hecht},
6917    title       = {Software Reliability in the Systems Context},
6918    journal     = ieeese,
6919    year        = 1986,
6920    volume      = 12,
6921    number      = 1,
6922    pages       = {51-58},
6923}
6924
6925@inproceedings{Herlihy03,
6926    author      = {Maurice Herlihy and Victor Luchangco and Mark Moir and William N. {Scherer III}},
6927    title       = {Software Transactional Memory for Dynamic-sized Data Structures},
6928    booktitle   = {Proceedings of the Twenty-second Annual Symposium on Principles of Distributed Computing},
6929    series      = {PODC '03},
6930    year        = {2003},
6931    location    = {Boston, Massachusetts},
6932    pages       = {92-101},
6933    numpages    = {10},
6934    publisher   = {ACM},
6935    address     = {New York, NY, USA},
6936}
6937
6938@article{Dijkstra65a,
6939    keywords    = {N-thread software-solution mutual exclusion},
6940    contributer = {pabuhr@plg},
6941    author      = {Edsger W. Dijkstra},
6942    title       = {Solution of a Problem in Concurrent Programming Control},
6943    journal     = cacm,
6944    volume      = 8,
6945    number      = 9,
6946    month       = sep,
6947    year        = 1965,
6948    pages       = {569},
6949    publisher   = {ACM},
6950    address     = {New York, NY, USA},
6951}
6952
6953@inproceedings{Chen05,
6954    keywords    = {fixed-priority, preemption},
6955    contributer = {pabuhr@plg},
6956    author      = {Jiongxiong Chen and Ashif Harji and Peter Buhr},
6957    title       = {Solution Space for Fixed-Priority with Preemption Threshold},
6958    booktitle   = {Proceedings of the 11th Real Time and Embedded Technology and Applications Symposium (RTAS'05)},
6959    organization= {IEEE},
6960    address     = {San Francisco, CA, U.S.A},
6961    month       = mar,
6962    year        = 2005,
6963    pages       = {385-394}
6964}
6965
6966@inproceedings{Tiemann88,
6967    keywords    = {wrappers},
6968    contributer = {pabuhr@plg},
6969    author      = {Michael D. Tiemann},
6970    title       = {Solving the RPC problem in GNU {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
6971    booktitle   = {Proceedings of the USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
6972    organization= {USENIX Association},
6973    address     = {Denver, Colorado, U.S.A},
6974    month       = oct,
6975    year        = 1988,
6976    pages       = {343-361}
6977}
6978
6979@article{Smith98,
6980    keywords    = {Polymorphic C},
6981    contributor = {a3moss@uwaterloo.ca},
6982    title       = {A sound polymorphic type system for a dialect of {C}},
6983    author      = {Smith, Geoffrey and Volpano, Dennis},
6984    journal     = {Science of computer programming},
6985    volume      = 32,
6986    number      = {1-3},
6987    pages       = {49-72},
6988    year        = {1998},
6989    publisher   = {Elsevier}
6990}
6991
6992@book{Campbell74,
6993    keywords    = {path expressions},
6994    contributer = {pabuhr@plg},
6995    author      = {R. H. Campbell and A. N. Habermann},
6996    title       = {The Specification of Process Synchronization by Path Expressions},
6997    publisher   = {Springer},
6998    year        = 1974,
6999    volume      = 16,
7000    pages       = {89-102},
7001    series      = {Lecture Notes in Computer Science},
7002}
7003
7004@article{Bentley85,
7005    keywords    = {CSP, concurrency},
7006    contributer = {pabuhr@plg},
7007    author      = {J. Bentley},
7008    title       = {A Spelling Checker},
7009    journal     = cacm,
7010    month       = may,
7011    year        = 1985,
7012    volume      = 28,
7013    number      = 5,
7014    pages       = {456-462},
7015}
7016
7017@manual{POSIX01,
7018    keywords    = {POSIX, Standard},
7019    contributer = {pabuhr@plg},
7020    key         = {POSIX},
7021    title       = {1003.1 Standard for Information Technology -- Portable Operating System Interface (POSIX), System Interface, Issue 6},
7022    organization= {IEEE and The Open Group},
7023    year        = 2001,
7024}
7025
7026@manual{POSIX08,
7027    keywords    = {POSIX, Standard},
7028    contributer = {pabuhr@plg},
7029    key         = {POSIX},
7030    title       = {1003.1 Standard for Information Technology -- Portable Operating System Interface (POSIX), Base Specifications, Issue 7},
7031    organization= {IEEE and The Open Group},
7032    year        = 2008,
7033}
7034
7035@inproceedings{ML:NJ,
7036    keywords    = {continuations, ML},
7037    contributer = {pabuhr@plg},
7038    author      = {A. Appel and D. MacQueen},
7039    title       = {A Standard {ML} Compiler},
7040    booktitle   = {Functional Programming Languages and Computer Architecture},
7041    publisher   = {Springer},
7042    series      = {Lecture Notes in Computer Science},
7043    volume      = 274,
7044    year        = 1987,
7045    pages       = {301-324},
7046}
7047
7048@techreport{MLreport,
7049    keywords    = {ML, polymorphism},
7050    contributer = {pabuhr@plg},
7051    author      = {R. Milner},
7052    title       = {The Standard {ML} Core Language},
7053    institution = {},
7054    number      = {Polymorphism II.2},
7055    month       = oct,
7056    year        = 1985
7057}
7058
7059@inproceedings{Ghelli,
7060    keywords    = {},
7061    contributer = {gjditchfield@plg},
7062    author      = {Giorgio Ghelli},
7063    title       = {A Static Type System for Message Passing},
7064    crossref    = "OOPSLA91",
7065    pages       = {129-145},
7066    summary     = {
7067        A strong, statically checked type system for object oriented
7068        languages is defined by modelling methods as overloaded functions
7069        with a "self" parameter, with dynamic overload resolution.  This
7070        allows covariant method redefinition.  However, if equality is
7071        covariantly redefined for Point and ColoredPoint classes, and a
7072        ColoredPoint is compared to a Point, Point equality will be used,
7073        even if self is the colored point!
7074    }
7075}
7076
7077@article{Dijkstra68b,
7078    keywords    = {semaphore, P/V},
7079    contributer = {pabuhr@plg},
7080    author      = {E. W. Dijkstra},
7081    title       = {The Structure of the ``{THE}''--Multiprogramming System},
7082    journal     = cacm,
7083    month       = may,
7084    year        = 1968,
7085    volume      = 11,
7086    number      = 5,
7087    pages       = {341-346}
7088}
7089
7090@misc{Sutter15,
7091    contributer = {pabuhr@plg},
7092    author      = {Herb Sutter and Bjarne Stroustrup and Gabriel Dos Reis},
7093    title       = {Structured bindings},
7094    issue_date  = {2015-10-14},
7095    month       = oct,
7096    year        = 2015,
7097    pages       = {1-6},
7098    numpages    = {6},
7099    howpublished= {\href{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0144r0.pdf}{http://\-www.open-std.org/\-jtc1/\-sc22/\-wg21/\-docs/\-papers/\-2015/\-p0144r0.pdf}},
7100}
7101
7102@book{Holt78,
7103    keywords    = {operating systems, concurrency},
7104    contributer = {pabuhr@plg},
7105    author      = {R. C. Holt and G. S. Graham and E. D. Lazowska and M. A. Scott},
7106    title       = {Structured Concurrent Programming with Operating System Applications},
7107    publisher   = {Addison-Wesley},
7108    address     = {Boston},
7109    year        = 1978,
7110}
7111
7112@article{Stevens74,
7113    keywords    = {coupling, cohesion},
7114    contributer = {pabuhr@plg},
7115    author      = {W. P. Stevens and and G. J. Myers and L. L. Constantine},
7116    title       = {Structured Design},
7117    journal     = ibmsj,
7118    year        = 1974,
7119    volume      = 13,
7120    number      = 2,
7121    pages       = {115-139},
7122}
7123
7124@article{Hansen72b,
7125    keywords    = {critical region},
7126    contributer = {pabuhr@plg},
7127    author      = {Per {Brinch Hansen}},
7128    title       = {Structured Multiprogramming},
7129    journal     = cacm,
7130    volume      = 15,
7131    number      = 7,
7132    month       = jul,
7133    year        = 1972,
7134    pages       = {574-578},
7135}
7136
7137@article{Knuth74,
7138    keywords    = {structured programming, goto statement},
7139    contributer = {pabuhr@plg},
7140    author      = {Donald E. Knuth},
7141    title       = {Structured Programming with go to Statements},
7142    journal     = acmcs,
7143    volume      = 6,
7144    number      = 4,
7145    month       = dec,
7146    year        = 1974,
7147    pages       = {261-301},
7148    issn        = {0360-0300},
7149    doi         = {http://doi.acm.org/10.1145/356635.356640},
7150    publisher   = {ACM},
7151    address     = {New York, NY, USA},
7152}
7153
7154@article{Lang98,
7155    keywords    = {real-time, exception handling},
7156    contributer = {pabuhr@plg},
7157    author      = {Jun Lang and David B. Stewart},
7158    title       = {A Study of the Applicability of Existing Exception-Handling Techniques to Component-Based Real-Time Software Technology},
7159    journal     = toplas,
7160    month       = mar,
7161    year        = 1998,
7162    volume      = 20,
7163    number      = 2,
7164    pages       = {274-301},
7165}
7166
7167@mastersthesis{Fortier89,
7168    keywords    = {monitors},
7169    contributer = {pabuhr@plg},
7170    author      = {Michel Fortier},
7171    title       = {Study of Monitors},
7172    school      = {Department of Computer Science, University of Waterloo},
7173    year        = 1989,
7174    address     = {Waterloo, Ontario, Canada, N2L 3G1},
7175}
7176
7177@techreport{AmadioCardelli,
7178    keywords    = {},
7179    contributer = {gjditchfield@plg},
7180    author      = {Roberto M. Amadio and Luca Cardelli},
7181    title       = {Subtyping Recursive Types},
7182    institution = {Digital Equipment Corporation Systems Research Center},
7183    year        = 1990,
7184    address     = {130 Lytton Avenue, Palo Alto, California 94301},
7185    month       = aug,
7186    number      = 62,
7187    summary     = {
7188        \[ (s \leq t \Rightarrow \alpha \leq \beta) \Rightarrow
7189               \mu s.\alpha leq \mu t.\beta  \]
7190        \[ \alpha = C[\alpha] \and \beta = C[\beta] \and C contractive
7191               \Rightarrow \alpha = \beta \]
7192        where a type \(\alpha\) is contractive in the type variable \(t\)
7193        if either \(t\) does not occur free in \(\alpha\), or \(\alpha\)
7194        can be rewritten via unfolding as a type of the shape
7195        \(\alpha_1 \rightarrow \alpha_2\), and unfolding rewrites
7196        \(\mu t.\alpha\) as \([t\leftarrow\mu t.\alpha]\alpha\).  An
7197        algorithm for finding type contexts \(C\) is given.
7198    }
7199}
7200
7201@techreport{Dijkstra80,
7202    keywords    = {split binary semaphores, general to binary},
7203    contributer = {pabuhr@plg},
7204    author      = {Edsger W. Dijkstra},
7205    title       = {The Superfluity of the General Semaphore},
7206    institution = {Nuenen},
7207    address     = {Netherlands},
7208    number      = {EWD734},
7209    month       = apr,
7210    year        = 1980,
7211}
7212
7213@inproceedings{Burns81,
7214    keywords    = {N-thread software-solution mutual exclusion},
7215    contributer = {pabuhr@plg},
7216    author      = {James E. Burns},
7217    title       = {Symmetry in Systems of Asynchronous Processes},
7218    booktitle   = {22nd Annual Symposium on Foundations of Computer Science, Nashville, TN, USA},
7219    year        = 1981,
7220    month       = oct,
7221    organization= {IEEE Computer Society},
7222    address     = {Los Angeles, CA, USA},
7223    pages       = {169-174},
7224}
7225
7226@article{Coffman71,
7227    keywords    = {deadlock},
7228    contributer = {pabuhr@plg},
7229    author      = {E. G. {Coffman, Jr.} and M. J. Elphick and A. Shoshani},
7230    title       = {System Deadlocks},
7231    journal     = acmcs,
7232    volume      = 3,
7233    number      = 2,
7234    month       = jun,
7235    year        = 1971,
7236    pages       = {67-78},
7237    publisher   = {ACM Press},
7238    address     = {New York, NY, USA},
7239    doi         = {http://doi.acm.org/10.1145/356586.356588},
7240}
7241
7242@phdthesis{Holmes99,
7243    keywords    = {synchronization, inheritance anomaly},
7244    contributer = {pabuhr@plg},
7245    author      = {David Holmes},
7246    title       = {Synchronisation Rings: Composable Synchronisation for Object-Oriented Systems},
7247    school      = {Department of Computing, Macquarie University},
7248    month       = oct,
7249    year        = 1999,
7250    address     = {Sydney, Australia},
7251}
7252
7253@book{Taubenfeld06,
7254    keywords    = {concurrency, synchronization},
7255    author      = {Gadi Taubenfeld},
7256    title       = {Synchronization Algorithms and Concurrent Programming},
7257    publisher   = {Pearson/Prentice-Hall},
7258    address     = {Harlow, England},
7259    year        = 2006,
7260}
7261
7262@article{Buhr92b,
7263    keywords    = {concurrency, exception handling, interventions},
7264    contributer = {pabuhr@plg},
7265    author      = {Peter A. Buhr and Hamish I. Macdonald and C. Robert Zarnke},
7266    title       = {Synchronous and Asynchronous Handling of Abnormal Events in the $\mu${S}ystem},
7267    journal     = spe,
7268    volume      = 22,
7269    number      = 9,
7270    month       = sep,
7271    year        = 1992,
7272    pages       = {735-776},
7273}
7274
7275@inproceedings{Greenwald96,
7276    keywords    = {compare and swap, hardware atomicity},
7277    contributer = {pabuhr@plg},
7278    author      = {Michael Greenwald and David Cheriton},
7279    title       = {The Synergy between Non-blocking Synchronization and Operating System Structure},
7280    booktitle   = {Proceedings of the Second USENIX Symposium on Operating Systems Design and Implementation},
7281    organization= {USENIX Association},
7282    address     = {Seattle, Washington, U.S.A.},
7283    month       = oct,
7284    year        = 1996,
7285    pages       = {123-136},
7286}
7287
7288@inbook{SunLWP,
7289    keywords    = {light-weight processes, threads},
7290    contributer = {pabuhr@plg},
7291    key         = {Sun},
7292    title       = {System Services Overview, Lightweight Processes},
7293    chapter     = {6},
7294    pages       = {71-111},
7295    publisher   = {Sun Microsystems},
7296    month       = may,
7297    year        = 1988,
7298    note        = {available as Part Number: 800-1753-10},
7299}
7300
7301@article{Randell75,
7302    contributer = {pabuhr@plg},
7303    author      = {Brian Randell},
7304    title       = {System Structure for Software Fault Tolerance},
7305    journal     = ieeese,
7306    volume      = {SE-1},
7307    number      = 2,
7308    month       = jun,
7309    year        = 1975,
7310    pages       = {220-232},
7311}
7312
7313@book{Modula-3,
7314    keywords    = {language reference manual},
7315    contributer = {pabuhr@plg},
7316    author      = {Andrew Birrell and Mark R. Brown and Luca Cardelli and Jim Donahue and Lucille Glassman and John Gutag and Jim Harning and Bill Kalsow and Roy Levin and Greg Nelson},
7317    title       = {Systems Programming with Modula-3},
7318    publisher   = {Prentice-Hall},
7319    address     = {Englewood Cliffs},
7320    year        = 1991,
7321    series      = {Prentice-Hall Series in Innovative Technology}
7322}
7323
7324% T
7325
7326@article{Yeager91,
7327    keywords    = {teaching, concurrency},
7328    contributer = {pabuhr@plg},
7329    author      = {Dorian P. Yeager},
7330    title       = {Teaching Concurrency in the Programming Languages Course},
7331    journal     = {SIGCSE BULLETIN},
7332    volume      = 23,
7333    number      = 1,
7334    month       = mar,
7335    year        = 1991,
7336    pages       = {155-161},
7337    note        = {The Papers of the Twenty-Second SIGCSE Technical Symposium on Computer Science Education,
7338                   March. 7--8, 1991, San Antonio, Texas, U.S.A.},
7339}
7340
7341@article{ml,
7342    keywords    = {ML, polymorphism},
7343    contributer = {gjditchfield@plg},
7344    author      = {Robin Milner},
7345    title       = {A Theory of Type Polymorphism in Programming},
7346    journal     = jcss,
7347    year        = 1978,
7348    volume      = 17, pages = {348-375}
7349}
7350
7351@book{Thoth,
7352    keywords    = {messages, concurrency},
7353    contributer = {pabuhr@plg},
7354    author      = {D. R. Cheriton},
7355    title       = {The Thoth System: Multi-Process Structuring and Portability},
7356    publisher   = {American Elsevier},
7357    year        = 1982
7358}
7359
7360@article{Boehm05,
7361    keywords    = {concurrency, C++},
7362    contributer = {pabuhr@plg},
7363    author      = {Hans-J. Boehm},
7364    title       = {Threads Cannot be Implemented as a Library},
7365    journal     = sigplan,
7366    volume      = 40,
7367    number      = 6,
7368    month       = jun,
7369    year        = 2005,
7370    pages       = {261-268},
7371}
7372
7373@misc{TIOBE,
7374    contributer = {pabuhr@plg},
7375    key         = {TIOBE Index},
7376    author      = {{TIOBE Index}},
7377    howpublished= {\href{http://www.tiobe.com/tiobe_index}{http://\-www.tiobe.com/\-tiobe\_index}},
7378}
7379
7380@misc{ThreadModel,
7381    contributer = {pabuhr@plg},
7382    key         = {ThreadModel},
7383    title       = {Thread (computing)},
7384    author      = {{Threading Model}},
7385    howpublished= {\href{https://en.wikipedia.org/wiki/Thread_(computing)}{https://\-en.wikipedia.org/\-wiki/\-Thread\_(computing)}},
7386}
7387
7388@misc{Bumbulis90,
7389    keywords    = {parameter inference, ForceN},
7390    contributer = {gjditchfield@plg},
7391    author      = {Peter Bumbulis},
7392    title       = {Towards Making Signatures First-Class},
7393    howpublished= {personal communication},
7394    month       = sep,
7395    year        = 1990,
7396}
7397
7398@techreport{alphard:preempt,
7399    keywords    = {},
7400    contributer = {gjditchfield@plg},
7401    author      = {Mary Shaw and Wm. A. Wulf},
7402    title       = {Toward Relaxing Assumptions in Languages and Their Implementations},
7403    institution = {Carnegie-Mellon University},
7404    year        = 1980,
7405    month       = jan,
7406    note        = {Reprinted in \cite{alphard}.}
7407}
7408
7409@inproceedings{Reynolds74,
7410    keywords    = {universal quantification, typed lambda calculus},
7411    contributer = {gjditchfield@plg},
7412    author      = {John C. Reynolds},
7413    title       = {Towards a Theory of Type Structure},
7414    booktitle   = {Colloque sur la Programmation},
7415    year        = 1974,
7416    pages       = {408-423},
7417    editor      = {B. Robinet},
7418    publisher   = {Springer},
7419    note        = {Lecture Notes in Computer Science, v. 19},
7420    abstract    = {
7421       
7422    }
7423}
7424
7425@incollection{Hoare72,
7426    keywords    = {critical region, concurrency},
7427    contributer = {pabuhr@plg},
7428    author      = {C. A. R. Hoare},
7429    title       = {Towards a Theory of Parallel Programming},
7430    booktitle   = {Operating Systems Techniques},
7431    editor      = {C. A. R. Hoare and R. H. Perott},
7432    publisher   = {Academic Press, New York},
7433    year        = 1972,
7434    pages       = {61-71},
7435}
7436
7437@inproceedings{Mitchell90,
7438    keywords    = {polymorphism, lambda calculus, bounded quantification},
7439    contributer = {gjditchfield@plg},
7440    author      = {John C. Mitchell},
7441    title       = {Toward a Typed Foundation for Method Specialization and Inheritance},
7442    booktitle   = {Conference Record of the Seventeenth Annual ACM Symposium
7443        on Principles of Programming Languages},
7444    year        = 1990,
7445    month       = jan, pages = {109-124},
7446    organization= {Association for Computing Machinery},
7447    abstract    = {
7448        This paper disucsses the phenomenon of {\em method specialization}
7449        in object-oriented programming languages.  A typed function
7450        calculus of objects and classes is presented, featuring method
7451        specialization when methods are added or redefined.  The soundness
7452        of the typing rules (without subtyping) is suggested by a
7453        translation into a more traditional calculus with
7454        recursively-defined record types.  However, semantic questions
7455        regarding the subtype relation on classes remain open.
7456    }
7457}
7458
7459@article{EL1,
7460    keywords    = {polymorphism},
7461    contributer = {pabuhr@plg},
7462    author      = {B. Wegbreit},
7463    title       = {The Treatment of Data Types in {EL1}},
7464    journal     = cacm,
7465    volume      = 17,
7466    number      = 5,
7467    month       = may,
7468    year        = 1974,
7469    pages       = {251-264},
7470}
7471
7472@mastersthesis{Till89,
7473    keywords    = {C, multiple return values, tuples},
7474    contributer = {pabuhr@plg},
7475    author      = {David W. Till},
7476    title       = {Tuples In Imperative Programming Languages},
7477    school      = {Department of Computer Science, University of Waterloo},
7478    year        = 1989,
7479    address     = {Waterloo, Ontario, Canada, N2L 3G1},
7480}
7481
7482@article{turing:old,
7483    keywords    = {verification, context conditions, faithful execution},
7484    contributer = {gjditchfield@plg},
7485    author      = {R. C. Holt and J. R. Cordy},
7486    title       = {The Turing Programming Language},
7487    journal     = cacm,
7488    year        = 1988,
7489    month       = dec,
7490    volume      = 31, number = 12, pages = {1410-1423}
7491}
7492
7493@book{Turing,
7494    keywords    = {verification, context conditions, faithful execution},
7495    contributer = {pabuhr@plg},
7496    author      = {R. C. Holt},
7497    title       = {Turing Reference Manual},
7498    publisher   = {Holt Software Associates Inc.},
7499    year        = 1992,
7500    edition     = {3rd},
7501}
7502
7503@techreport{Dijkstra79,
7504    keywords    = {split binary semaphores},
7505    contributer = {pabuhr@plg},
7506    author      = {Edsger W. Dijkstra},
7507    title       = {A Tutorial on the Split Binary Semaphore},
7508    institution = {Nuenen},
7509    address     = {Netherlands},
7510    number      = {EWD703},
7511    month       = mar,
7512    year        = 1979,
7513}
7514
7515@book{pldesign,
7516    keywords    = {},
7517    editor      = {Anthony I. Wasserman},
7518    title       = {Tutorial: Programming Language Design},
7519    publisher   = {Computer Society Press},
7520    address     = {Los Alamitos},
7521    year        = 1980
7522}
7523
7524@misc{TraceCompass,
7525    contributer = {pabuhr@plg},
7526    key         = {Trace Compass},
7527    author      = {{T}race {C}ompass},
7528    howpublished= {\href{https://projects.eclipse.org/proposals/trace-compass}{https://\-projects.eclipse.org/\-proposals/\-trace-compass}},
7529}
7530 
7531@article{Leroy00,
7532    keywords    = {type-systems, exceptions},
7533    contributer = {pabuhr@plg},
7534    author      = {Xavier Leroy and Fran\c{c}ois Pessaux},
7535    title       = {Type-Based Analysis of Uncaught Exceptions},
7536    journal     = toplas,
7537    month       = mar,
7538    year        = 2000,
7539    volume      = 22,
7540    number      = 2,
7541    pages       = {340-377},
7542    comment     = {
7543        Argues against declaring exceptions on routine definitions.
7544    },
7545}
7546
7547@article{Cormack90,
7548    keywords    = {polymorphism},
7549    contributer = {pabuhr@plg},
7550    author      = {G. V. Cormack and A. K. Wright},
7551    title       = {Type-dependent Parameter Inference},
7552    journal     = sigplan,
7553    volume      = 25,
7554    number      = 6,
7555    month       = jun,
7556    publisher   = {ACM},
7557    address     = {New York, NY, USA},
7558    year        = 1990,
7559    pages       = {127-136},
7560    note        = {Proceedings of the ACM Sigplan'90 Conference on Programming Language Design and Implementation
7561                   June 20-22, 1990, White Plains, New York, U.S.A.},
7562}
7563
7564@article{concatenation,
7565    keywords    = {record concatenation, isa},
7566    contributer = {gjditchfield@plg},
7567    author      = {N. Wirth},
7568    title       = {Type Extensions},
7569    journal     = toplas,
7570    volume      = {10},
7571    number      = {2},
7572    pages       = {204-214},
7573    month       = apr, year = 1988,
7574    comment     = {
7575        Extended record types add fields to their base record.  Assignment
7576        truncations.  Pointers can point at extended type instances.  For
7577        polymorphism, call by value is assignment, and call by reference is
7578        pointer passing.  Overloading isn't discussed.  Type information
7579        can be recovered through an ``is'' type test or through type guards
7580        (casts).  A version of the WITH statement could avoid repeated
7581        checking.
7582
7583        Private/public access to record fields can be provided by exporting
7584        a base type, and using a private extension. Statically allocated
7585        instances need a compiler hint specifying the maximum size of the
7586        private type.
7587
7588        Type checking is cheap (if the creation of pointer values is
7589        controlled).  Types have type descriptors.  Extension descriptors
7590        point at their direct base.  Heap objects point at their
7591        descriptor, and reference parameters are accompanied by type
7592        descriptor parameters.  ``v is t0'' loops along the chain of
7593        descriptors.
7594    }
7595}
7596
7597% U
7598
7599@book{uC++book,
7600    keywords    = {control structure, concurrency, uC++},
7601    contributer = {pabuhr@plg},
7602    author      = {Peter A. Buhr},
7603    title       = {Understanding Control Flow: Concurrent Programming using $\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
7604    publisher   = {Springer},
7605    address     = {Switzerland},
7606    year        = 2016,
7607}
7608
7609@article{Cardelli85,
7610    keywords    = {polymorphism},
7611    contributer = {pabuhr@plg},
7612    author      = {Luca Cardelli and Peter Wegner},
7613    title       = {On Understanding Types, Data Abstractions, and Polymorphism},
7614    journal     = acmcs,
7615    month       = dec,
7616    year        = 1985,
7617    volume      = 17,
7618    number      = 4,
7619    pages       = {471-522},
7620}
7621
7622@inproceedings{Wilson92,
7623    keywords    = {garbage collection survey},
7624    contributer = {pabuhr@plg},
7625    author      = {Paul R. Wilson},
7626    title       = {Uniprocessor Garbage Collection Techniques},
7627    booktitle   = {Proceedings of the International Workshop on Memory Management},
7628    location    = {St. Malo, France},
7629    publisher   = {Springer},
7630    series      = {Lecture Notes in Computer Science},
7631    volume      = 637,
7632    month       = sep,
7633    year        = {1992},
7634    pages       = {1-42},
7635}
7636
7637@inproceedings{Hewitt73,
7638    author      = {Carl Hewitt and Peter Bishop and Richard Steiger},
7639    title       = {A Universal Modular {ACTOR} Formalism for Artificial Intelligence},
7640    booktitle   = {Proceedings of the 3rd International Joint Conference on Artificial Intelligence},
7641    address     = {Standford, California, U.S.A.},
7642    pages       = {235-245},
7643    month       = aug,
7644    year        = 1973,
7645}
7646
7647@article{Bourne78,
7648    keywords    = {Shell},
7649    contributer = {pabuhr@plg},
7650    author      = {S. R. Bourne},
7651    title       = {The UNIX Shell},
7652    journal     = {The Bell System Technical Journal},
7653    volume      = {57, part 2},
7654    month       = {July--August},
7655    year        = 1978,
7656    pages       = {1971-1990},
7657}
7658
7659@inproceedings{Krischer12,
7660    keywords    = {exception, usability, asynchronous, assertion, injection, logging},
7661    contributer = {pabuhr@plg},
7662    author      = {Roy Krischer and Peter A. Buhr},
7663    title       = {Usability Challenges in Exception Handling},
7664    booktitle   = {5th International Workshop on Exception Handling (WEH)},
7665    optorganization= {16th International Symposium on the Foundations of Software Engineering (FSE 16)},
7666    address     = {Zurich, Switzerland},
7667    month       = jun,
7668    year        = 2012,
7669    pages       = {7-13},
7670}
7671
7672@techreport{Harmony,
7673    keywords    = {messages, concurrency},
7674    contributer = {pabuhr@plg},
7675    author      = {W. Morven Gentleman},
7676    title       = {Using the Harmony Operating System},
7677    institution = {National Research Council of Canada, Ottawa, Canada},
7678    number      = {24685},
7679    month       = may,
7680    year        = 1985
7681}
7682
7683@article{delegation,
7684    keywords    = {delegation, inheritance, actors},
7685    contributer = {gjditchfield@plg},
7686    author      = {Henry Lieverman},
7687    title       = {Using Prototypical Objects to Implement Shared Behavior in
7688                  Object Oriented Systems},
7689    journal     = sigplan,
7690    month       = nov, year = 1986,
7691    volume      = 21, number = 11, pages = {214-223}
7692}
7693
7694% V
7695
7696@article{V-Kernel,
7697    keywords    = {messages, concurrency},
7698    contributer = {pabuhr@plg},
7699    author      = {David R. Cheriton},
7700    title       = {The {V} Distributed System},
7701    journal     = cacm,
7702    month       = mar,
7703    year        = 1988,
7704    volume      = 31,
7705    number      = 3,
7706    pages       = {314-333}
7707}
7708
7709@misc{Vala,
7710    keywords    = {GObject, Vala},
7711    contributor = {a3moss@uwaterloo.ca},
7712    key         = {Vala},
7713    organization= {The {GNOME} Project},
7714    title       = {{V}ala Reference Manual},
7715    year        = 2017,
7716    howpublished= {\url{https://wiki.gnome.org/Projects/Vala/Manual}},
7717}
7718
7719@inproceedings{Amdahl67,
7720    author      = {Gene M. Amdahl},
7721    title       = {Validity of the Single Processor Approach to Achieving Large Scale Computing Capabilities},
7722    booktitle   = {Proceedings of the April 18-20, 1967, Spring Joint Computer Conference},
7723    series      = {AFIPS '67 (Spring)},
7724    year        = 1967,
7725    location    = {Atlantic City, New Jersey},
7726    pages       = {483--485},
7727    publisher   = {ACM},
7728    address     = {New York, NY, USA},
7729}
7730
7731@article{Mayer81,
7732    keywords    = {},
7733    contributer = {pabuhr@plg},
7734    author      = {A. J. W. Mayer},
7735    title       = {Value Receiving Procedures},
7736    journal     = sigplan,
7737    volume      = 16,
7738    number      = 11,
7739    month       = nov,
7740    year        = 1981,
7741    pages       = {30-34},
7742}
7743
7744@article{Doran80,
7745    keywords    = {concurrency, Dekker's Algorithm},
7746    contributer = {pabuhr@plg},
7747    author      = {R. W. Doran and L. K. Thomas},
7748    title       = {Variants of the Software Solution to Mutual Exclusion},
7749    journal     = ipl,
7750    month       = jul,
7751    year        = 1980,
7752    volume      = 10,
7753    number      = {4/5},
7754    pages       = {206-208},
7755}
7756
7757@book{VAX,
7758    keywords    = {VAX, DEC},
7759    contributer = {pabuhr@plg},
7760    key         = {VAX},
7761    title       = {VAX-11 Architecture Reference Manual},
7762    publisher   = {Digital Press},
7763    address     = {Bedford},
7764    month       = may,
7765    year        = 1982,
7766}
7767
7768@book{Kenah88,
7769    author      = {Lawrence J. Kenah and Ruth E. Goldenberg and Simon F. Bate},
7770    title       = {{VAX/VMS} Internals and Data Structures Version 4.4},
7771    publisher   = {Digital Press},
7772    address     = {Bedford},
7773    year        = 1988,
7774}
7775
7776@article{Hesselink13,
7777    keywords    = {software solutions, N-thread, mutual exclusions},
7778    contributer = {pabuhr@plg},
7779    author      = {Wim H. Hesselink},
7780    title       = {Verifying a Simplification of Mutual Exclusion by {L}ycklama--{H}adzilacos},
7781    journal     = {Acta Informatica},
7782    publisher   = {Springer},
7783    address     = {New York},
7784    year        = {2013},
7785    volume      = {50},
7786    number      = {3},
7787    pages       = {199-228},
7788}
7789
7790% W
7791
7792@article{Herlihy91,
7793    keywords    = {linearization, wait-free synchronization},
7794    contributer = {pabuhr@plg},
7795    author      = {Maurice Herlihy},
7796    title       = {Wait-free Synchronization},
7797    journal     = toplas,
7798    volume      = {13},
7799    number      = {1},
7800    month       = jan,
7801    year        = 1991,
7802    pages       = {124--149},
7803    numpages    = {26},
7804    publisher   = {ACM},
7805    address     = {New York, NY, USA},
7806}
7807
7808@inproceedings{vonBehren03,
7809    keywords    = {threads, events, web server},
7810    contributer = {pabuhr@plg},
7811    author      = {Rob von Behren and Jeremy Condit and Eric Brewer},
7812    title       = {Why Events Are a Bad Idea (for high-concurrency servers)},
7813    booktitle   = {HotOS IX: The 9th Workshop on Hot Topics in Operating Systems},
7814    publisher   = {USENIX Association},
7815    address     = {Lihue, Hawaii, U.S.A.},
7816    month       = may,
7817    year        = 2003,
7818    pages       = {19-24},
7819}
7820
7821@techreport{Moss90,
7822    keywords    = {Swizzling, database},
7823    contributer = {akgoel@plg},
7824    author      = {J. Moss},
7825    title       = {Working with Persistent Objects: To Swizzle or Not to Swizzle},
7826    institution = {CS Department, University of Massachusetts},
7827    address     = {},
7828    number      = {CS 90-38},
7829    month       = may,
7830    year        = 1990,
7831}
7832
7833@inproceedings{Str:oop,
7834    keywords    = { },
7835    contributer = {pabuhr@plg},
7836    author      = {Bjarne Stroustrup},
7837    title       = {What is ``Object-Oriented Programming''?},
7838    booktitle   = {Proceedings of the First European Conference on Object Oriented Programming}, 
7839    month       = jun,
7840    year        = 1987
7841}
7842
7843@misc{Stroustrup:overloading,
7844    keywords    = {operator overloading},
7845    contributer = {pabuhr@plg},
7846    author      = {Bjarne Stroustrup},
7847    title       = {Why can't I overload dot, ::, sizeof, etc.?},
7848    month       = oct,
7849    year        = 2007,
7850    howpublished= {{\small\textsf{http://\-www.research.att.com/\-bs/\-bs\_faq2.html\-\#overload-dot}}},
7851}
7852
7853@techreport{Gray85,
7854    keywords    = {fault-tolerant system},
7855    contributer = {pabuhr@plg},
7856    author      = {Jim Gray},
7857    title       = {Why Do Computers Stop and What Can Be Done About It?},
7858    institution = {Tandem Computers},
7859    number      = {85.7 PN87614},
7860    month       = jun,
7861    year        = 1985,
7862    note        = {\href{http://www.hpl.hp.com/techreports/tandem/TR-85.7.pdf}{http://www.hpl.hp.com/\-techreports/\-tandem/\-TR-85.7.pdf}},
7863}
7864
7865@article{Tarjan84,
7866    keywords    = {union-find},
7867    contributer = {a3moss@uwaterloo.ca},
7868    author      = {Tarjan, Robert E. and van Leeuwen, Jan},
7869    title       = {Worst-case Analysis of Set Union Algorithms},
7870    journal     = {J. ACM},
7871    issue_date  = {April 1984},
7872    volume      = 31,
7873    number      = 2,
7874    month       = mar,
7875    year        = 1984,
7876    issn        = {0004-5411},
7877    pages       = {245--281},
7878    numpages    = {37},
7879    url         = {http://doi.acm.org/10.1145/62.2160},
7880    doi         = {10.1145/62.2160},
7881    acmid       = {2160},
7882    publisher   = {ACM},
7883    address     = {New York, NY, USA},
7884} 
7885
7886% X
7887
7888% Y
7889
7890@article{Boehm12,
7891    keywords    = {memory model, race condition},
7892    contributer = {pabuhr@plg},
7893    author      = {Boehm, Hans-J. and Adve, Sarita V.},
7894    title       = {You Don'T Know Jack About Shared Variables or Memory Models},
7895    journal     = cacm,
7896    volume      = 55,
7897    number      = 2,
7898    month       = feb,
7899    year        = 2012,
7900    pages       = {48--54},
7901    publisher   = {ACM},
7902    address     = {New York, NY, USA},
7903}
7904
7905% Z
7906
7907% Cross-referenced entries:
7908
7909% O
7910
7911% The SIGPLAN Notices issue should be in a note field, but notes are
7912% inherited by all refering entries, instead of being held in the
7913% cross-referenced entry.  Putting it in "publisher" is a kludge, but it
7914% works.
7915@proceedings{OOPSLA86,
7916    contributer = {gjditchfield@plg},
7917    title       = {{OOPSLA} '86 Conference Proceedings},
7918    booktitle   = {{OOPSLA} '86 Conference Proceedings},
7919    year        = 1986,
7920    editor      = {Norman Meyrowitz},
7921    publisher   = sigplan,
7922    organization= {Association for Computing Machinery},
7923    address     = {Portland, Oregon},
7924    month       = sep,
7925}
7926
7927@proceedings{OOPSLA87,
7928    contributer = {gjditchfield@plg},
7929    title       = {{OOPSLA} '87 Conference Proceedings},
7930    booktitle   = {{OOPSLA} '87 Conference Proceedings},
7931    year        = 1987,
7932    editor      = {Norman Meyrowitz},
7933    publisher   = sigplan,
7934    organization= {Association for Computing Machinery},
7935    address     = {Orlando, Florida},
7936    month       = oct,
7937}
7938
7939@proceedings{OOPSLA88,
7940    contributer = {gjditchfield@plg},
7941    title       = {{OOPSLA} '88 Conference Proceedings},
7942    booktitle   = {{OOPSLA} '88 Conference Proceedings},
7943    year        = 1988,
7944    editor      = {Norman Meyrowitz},
7945    publisher   = sigplan,
7946    organization= {Association for Computing Machinery},
7947    address     = {San Diego, California},
7948    month       = sep,
7949}
7950
7951@proceedings{OOPSLA89,
7952    contributer = {gjditchfield@plg},
7953    title       = {{OOPSLA} '89 Conference Proceedings},
7954    booktitle   = {{OOPSLA} '89 Conference Proceedings},
7955    year        = 1989,
7956    editor      = {Norman Meyrowitz},
7957    publisher   = sigplan,
7958    organization= {Association for Computing Machinery},
7959    address     = {New Orleans, Louisiana},
7960    month       = oct,
7961}
7962
7963@proceedings{OOPSLA90,
7964    contributer = {gjditchfield@plg},
7965    title       = {{OOPSLA/ECOOP} '90 Conference Proceedings},
7966    booktitle   = {{OOPSLA} '90 Conference Proceedings},
7967    year        = 1990,
7968    editor      = {Norman Meyrowitz},
7969    publisher   = sigplan,
7970    organization= {Association for Computing Machinery},
7971    address     = {Ottawa, Canada},
7972    month       = oct,
7973}
7974
7975@proceedings{OOPSLA91,
7976    contributer = {gjditchfield@plg},
7977    title       = {{OOPSLA} '91 Conference Proceedings},
7978    booktitle   = {{OOPSLA} '91 Conference Proceedings},
7979    year        = 1991,
7980    editor      = {Andreas Paepcke},
7981    publisher   = sigplan,
7982    organization= {Association for Computing Machinery},
7983    address     = {Phoenix, Arizona},
7984    month       = oct,
7985}
Note: See TracBrowser for help on using the repository browser.