source: doc/bibliography/pl.bib @ 9be2b60

arm-ehcleanup-dtorsjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-expr
Last change on this file since 9be2b60 was 9be2b60, checked in by Peter A. Buhr <pabuhr@…>, 3 years ago

add Swift05, formatting

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