source: doc/bibliography/pl.bib @ a786586

aaron-thesisarm-ehcleanup-dtorsjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-expr
Last change on this file since a786586 was a786586, checked in by Aaron Moss <a3moss@…>, 3 years ago

thesis: fix URL line breaks in References

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