source: doc/bibliography/cfa.bib @ f0322e20

ADTaaron-thesisarm-ehast-experimentalcleanup-dtorsdeferred_resndemanglerenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprnew-envno_listpersistent-indexerpthread-emulationqualifiedEnumresolv-newwith_gc
Last change on this file since f0322e20 was b2052f7, checked in by Peter A. Buhr <pabuhr@…>, 7 years ago

update bibliography

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