source: doc/bibliography/pl.bib @ a2545593

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

Add ascription casts to future work

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