source: doc/bibliography/pl.bib @ f2c5726

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

thesis: start asymptotic analysis of resolution problem

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