source: doc/bibliography/pl.bib @ cf01d0b

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

thesis: typo-fixing revisions from Werner, Ondrej

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