source: doc/bibliography/cfa.bib @ 7e17503

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 7e17503 was 7e17503, checked in by Peter A. Buhr <pabuhr@…>, 7 years ago

update all ISO/IEC citations

  • Property mode set to 100644
File size: 225.9 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. Exp."}
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},
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    author      = {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}{\textsf{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},
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},
2449    title       = {Erlang Reference Manual User's Guide, Vertion 7.0},
2450    organization= {Erlang/OTP System Documentation},
2451    address     = {1430 Broadway, New York, New York  10018},
2452    month       = jun,
2453    year        = 2015,
2454    note        = {\href{http://www.erlang.org/doc/pdf/otp-system-documentation.pdf}{\textsf{http://www.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@inproceedings{F-bound,
2776    keywords    = {},
2777    contributer = {gjditchfield@plg},
2778    author      = {Peter Canning and William Cook and Walter Hill and Walter Olthoff and John C. Mitchell},
2779    title       = {F-Bounded Polymorphism for Object-Oriented Programming},
2780    booktitle   = {Fourth International Conference on Functional Programming Languages and Computer Architecture},
2781    year        = 1989,
2782    month       = sep,
2783    pages       = {273-280}
2784}
2785
2786@mastersthesis{Wasik08,
2787    author      = {Ayelet Wasik},
2788    title       = {Features of a Multi-Threaded Memory Allocator},
2789    school      = {University of Waterloo},
2790    year        = 2008,
2791    month       = jan,
2792    address     = {Waterloo, Ontario, Canada, N2L 3G1},
2793    note        = {\textsf{http://uwspace.uwaterloo.ca/\-bitstream/\-10012/\-3501/\-1/\-Thesis.pdf}},
2794}
2795
2796@article{Holzmann94,
2797    keywords    = {semaphore, flags},
2798    contributer = {pabuhr@plg},
2799    author      = {Gerard J. Holzmann and Bj\"{o}rn Pehrson},
2800    title       = {The First Data Networks},
2801    journal     = {Scientific American},
2802    month       = jan,
2803    year        = 1994,
2804    volume      = 12,
2805    number      = 1,
2806    pages       = {124-129},
2807}
2808
2809@article{Bohm66,
2810    keywords    = {goto, structured programming},
2811    contributer = {pabuhr@plg},
2812    author      = {C. B\"{o}hm and G. Jacopini},
2813    title       = {Flow diagrams, Turing Machines and Languages with only two Formation Rules},
2814    journal     = cacm,
2815    month       = may,
2816    year        = 1966,
2817    volume      = 9,
2818    number      = 5,
2819    pages       = {366-371},
2820}
2821
2822@manual{Fortran95,
2823    keywords    = {Fortran 95},
2824    contributer = {pabuhr@plg},
2825    key         = {Fortran95},
2826    title       = {Fortran 95 Standard, ISO/IEC 1539},
2827    organization= {Unicomp, Inc.},
2828    address     = {7660 E. Broadway, Tucson, Arizona, U.S.A, 85710},
2829    month       = jan,
2830    year        = 1997,
2831}
2832
2833@manual{Fortran08,
2834    keywords    = {ISO/IEC Fortran 08},
2835    contributer = {pabuhr@plg},
2836    author      = {Fortran08},
2837    title       = {Programming Languages -- {Fortran} Part 1:Base Language ISO/IEC 1539-1:2010},
2838    edition     = {3rd},
2839    publisher   = {International Standard Organization},
2840    address     = {\href{https://www.iso.org/standard/50459.html}{https://\-www.iso.org/\-standard/\-50459.html}},
2841    year        = 2010,
2842}
2843
2844@book{Andrews00:book,
2845    keywords    = {concurrency},
2846    contributer = {pabuhr@plg},
2847    author      = {Gregory R. Andrews},
2848    title       = {Foundations of Multithreaded, Parallel and Distributed Programming},
2849    publisher   = {Addison--Wesley},
2850    year        = 2000,
2851}
2852
2853@article{Agha89,
2854    keywords    = {actors, concurrency},
2855    contributer = {pabuhr@plg},
2856    author      = {Gul A. Agha},
2857    title       = {Foundational Issues in Concurrent Computing},
2858    journal     = sigplan,
2859    month       = apr,
2860    year        = 1989,
2861    volume      = 24,
2862    number      = 4,
2863    pages       = {60-65},
2864    note        = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming,
2865                   Sept. 26--27, 1988, San Diego, California, U.S.A},
2866}
2867
2868@article{ool,
2869    keywords    = {},
2870    contributer = {gjditchfield@plg},
2871    author      = {Douglas T. Ross},
2872    title       = {Toward Foundations for the Understanding of Type},
2873    journal     = sigplan,
2874    year        = 1976,
2875    volume      = 11, pages = {63-65},
2876    note        = {Conference on Data: Abstraction, Definition and Structure},
2877    summary     = {
2878        Possibly the first use (without definition, alas) of the phrase
2879        "object oriented language".  Metaphysical to the point of incoherence.
2880    }
2881}
2882
2883@article{frames,
2884    keywords    = {frames},
2885    contributer = {gjditchfield@plg},
2886    author      = {Paul G. Basset},
2887    title       = {Frame-Based Software Engineering},
2888    journal     = {IEEE Software},
2889    month       = jul, year = 1987,
2890    volume      = 4, number = 4, pages = {9-16}
2891}
2892
2893@article{Sutter05,
2894    keywords    = {concurrency, C++},
2895    contributer = {pabuhr@plg},
2896    author      = {Herb Sutter},
2897    title       = {A Fundamental Turn Toward Concurrency in Software},
2898    journal     = {Dr. Dobb's Journal : Software Tools for the Professional Programmer},
2899    month       = mar,
2900    year        = 2005,
2901    volume      = 30,
2902    number      = 3,
2903    pages       = {16-22},
2904}
2905
2906@inproceedings{Dony01,
2907    keywords    = {Smalltalk, exception handling},
2908    contributer = {pabuhr@plg},
2909    author      = {Chistophe Dony},
2910    title       = {A Fully Object-Oriented Exception Handling System: Rationale and Smalltalk Implementation},
2911    booktitle   = {Exception Handling},
2912    publisher   = {Springer},
2913    volume      = 2022,
2914    series      = {Lecture Notes in Computer Science},
2915    year        = 2001,
2916    pages       = {18-38}
2917}
2918
2919@misc{FW,
2920    key         = {FW},
2921    contributer = {gjditchfield@plg},
2922    title       = {Funk \& Wagnalls Standard Desk Dictionary},
2923    year        = 1980
2924}
2925
2926@book{Knuth73V1,
2927    contributer = {pabuhr@plg},
2928    author      = {Donald E. Knuth},
2929    title       = {Fundamental Algorithms},
2930    series      = {The Art of Computer Programming},
2931    publisher   = {Addison-Wesley},
2932    address     = {Boston},
2933    year        = 1973,
2934    volume      = 1,
2935    edition     = {2nd},
2936}
2937
2938@inproceedings{Strachey,
2939    keywords    = {polymorphism},
2940    contributer = {gjditchfield@plg},
2941    author      = {C. Strachey},
2942    title       = {Fundamental Concepts in Programming Languages},
2943    booktitle   = {Lecture Notes for the International Summer School in Computer Programming},
2944    year        = 1967,
2945    month       = aug,
2946    address     = {Copenhagen},
2947    comment     = {
2948        Defines ad-hoc and parametric polymorphism.
2949    }
2950}
2951
2952@article{Eisenberg72,
2953    keywords    = {concurrency, N-Process solution, O(N)},
2954    contributer = {pabuhr@plg},
2955    author      = {Murray A. Eisenberg and Michael R. McGuire},
2956    title       = {Further Comments on {D}ijkstra's Concurrent Programming Control Problem},
2957    journal     = cacm,
2958    month       = nov,
2959    year        = 1972,
2960    volume      = 15,
2961    number      = 11,
2962    pages       = {999},
2963}
2964
2965% G
2966
2967@article{Boehm88,
2968    keywords    = {conservative garbage collection, C},
2969    contributer = {gjditchfield@plg},
2970    author      = {Hans-Juergen Boehm and Mark Weiser},
2971    title       = {Garbage Collection in an Uncooperative Environment},
2972    journal     = spe,
2973    month       = sep,
2974    year        = 1988,
2975    volume      = 18,
2976    number      = 9,
2977    pages       = {807-820}
2978}
2979
2980@manual{gcc,
2981    keywords    = {},
2982    contributer = {gjditchfield@plg},
2983    title       = {GCC},
2984    author      = {Richard M. Stallman},
2985    organization= {Free Software Foundation},
2986    address     = {Cambridge}
2987}
2988
2989@article{doUpon,
2990    keywords    = {formal verification, axiomatic semantics, control structures},
2991    contributer = {gjditchfield@plg},
2992    author      = {Ed Anson},
2993    title       = {A Generalized Iterative Construct and Its Semantics},
2994    journal     = toplas,
2995    volume      = {9},    number = {4},
2996    pages       = {567-581},
2997    month       = oct, year = 1987,
2998    comment     = {
2999        \begin{verbatim}
3000            do
3001                   P1 -> L1
3002               [] P2 -> L2
3003            ...
3004               [] Pm -> Lm
3005            upon
3006                   Q1 -> M1
3007               [] Q2 -> M2
3008            ...
3009               [] qn -> mn
3010            od
3011        \end{verbatim}
3012
3013        If there is an i such that Qi is true, execute Mi and terminate.
3014        Otherwise, if there is an i such that Pi is true, execute Li and
3015        repeat the loop.  Otherwise, fail.
3016    }
3017}
3018
3019@unpublished{Bilson,
3020    keywords    = {generic programming, generics, polymorphism},
3021    contributor = {a3moss@plg},
3022    author      = {Richard C. Bilson and Glen Ditchfield and Peter A. Buhr},
3023    title       = {Generic Programming with Inferred Models},
3024}
3025
3026@article{Haskell,
3027    keywords    = {lazy evaluation, type class},
3028    contributer = {pabuhr},
3029    author      = {Paul Hudak and Joseph H. Fasel},
3030    title       = {A Gentle Introduction to Haskell},
3031    journal     = sigplan,
3032    volume      = 27,
3033    number      = 5,
3034    month       = may,
3035    year        = 1992,
3036    pages       = {T1-53},
3037}
3038
3039@manual{Go,
3040    keywords    = {Go programming language},
3041    contributer = {pabuhr@plg},
3042    title       = {{Go} Programming Language},
3043    author      = {Robert Griesemer and Rob Pike and Ken Thompson},
3044    organization= {Google},
3045    year        = 2009,
3046    note        = {\href{http://golang.org/ref/spec}{http://\-golang.org/\-ref/\-spec}},
3047}
3048
3049@article{Dijkstra68a,
3050    keywords    = {goto},
3051    contributer = {pabuhr@plg},
3052    author      = {Edsger W. Dijkstra},
3053    title       = {Go To Statement Considered Harmful},
3054    journal     = cacm,
3055    month       = mar,
3056    year        = 1968,
3057    volume      = 11,
3058    number      = 3,
3059    pages       = {147-148},
3060    note        = {Reprinted in \cite{Yourdon79} pp. 29--36.},
3061}
3062
3063@online{GObject,
3064    keywords    = {GObject},
3065    contributor = {a3moss@uwaterloo.ca},
3066    author      = {{GObject}},
3067    organization= {The GNOME Project},
3068    title       = {{GObject} Reference Manual},
3069    year        = 2014,
3070    url         = {https://developer.gnome.org/gobject/stable/},
3071    urldate     = {2017-04-04}
3072}
3073
3074@article{Choi91,
3075    keywords    = {contra-variance, functions},
3076    contributer = {pabuhr@plg},
3077    author      = {Injun Choi and Michael V. Mannino},
3078    title       = {Graph Interpretation of Methods: A Unifying Framework for Polymorphism in Object-Oriented Programming},
3079    journal     = {OOPS Messenger},
3080    volume      = 2,
3081    number      = 1,
3082    month       = jan,
3083    year        = 1991,
3084    pages       = {38-54},
3085}
3086
3087@misc{GNU-C,
3088    keywords    = {C, ANSI C},
3089    contributer = {pabuhr@plg},
3090    author      = {Richard Stallman},
3091    title       = {The Free Software Foundation's Gnu {C} Compiler},
3092    howpublished= {Free Software Foundation, 1000 Mass Ave., Cambridge, MA, U.S.A., 02138},
3093    year        = 1989,
3094}
3095
3096@article{Dijkstra:green,
3097    keywords    = {ada},
3098    contributer = {gjditchfield@plg},
3099    author      = {Edsger W. Dijkstra},
3100    title       = {On the GREEN Language submitted to the DoD},
3101    journal     = sigplan,
3102    year        = 1978,
3103    month       = oct,
3104    volume      = 13,
3105    number      = 10,
3106    pages       = {16-21}
3107}
3108
3109@inproceedings{Miller02,
3110    keywords    = {exception handling},
3111    contributer = {pabuhr@plg},
3112    author      = {Robert Miller and Anand Tripathi},
3113    title       = {The Guardian Model for Exception Handling in Distributed Systems},
3114    booktitle   = {21st Symposium on Reliable Distributed Systems},
3115    organization= {IEEE},
3116    address     = {Suita, Japan},
3117    year        = 2002,
3118    month       = oct,
3119    pages       = {304-313}
3120}
3121
3122@phdthesis{Chen09,
3123    author      = {Jun Chen},
3124    title       = {Guided Testing of Concurrent Programs Using Value Schedules},
3125    school      = {University of Waterloo},
3126    year        = 2009,
3127    month       = sep,
3128    address     = {Waterloo, Ontario, Canada, N2L 3G1},
3129    note        = {\textsf{http://uwspace.uwaterloo.ca/bitstream/\-10012/\-4735/\-1/\-Chen-Jun.pdf}},
3130}
3131
3132@misc{GNU-C++,
3133    keywords    = {C++, GNU C},
3134    contributer = {pabuhr@plg},
3135    author      = {Michael D. Tiemann},
3136    title       = {User's Guide to GNU {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
3137    howpublished= {Free Software Foundation, 1000 Mass Ave., Cambridge, MA, U.S.A., 02138},
3138    month       = mar,
3139    year        = 1990,
3140}
3141
3142% H
3143
3144@article{Michael04a,
3145    keywords    = {Lock-free, synchronization, concurrent programming, memory management, multiprogramming, dynamic data structures},
3146    author      = {Maged M. Michael},
3147    title       = {Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects},
3148    journal     = ieeepds,
3149    volume      = 15,
3150    number      = 6,
3151    month       = jun,
3152    year        = 2004,
3153    pages       = {491-504},
3154    publisher   = {IEEE Press},
3155    address     = {Piscataway, NJ, USA},
3156}
3157
3158@techreport{Hermes90,
3159    keywords    = {processes, distributed computing},
3160    contributer = {pabuhr@plg},
3161    author      = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini}, 
3162    title       = {Hermes: A Language for Distributed Computing},
3163    institution = {IBM T. J. Watson Research Center},
3164    address     = {Yorktown Heights, New York, U.S.A., 10598},
3165    month       = oct,
3166    year        = 1990,
3167}
3168
3169@book{Hermes91,
3170    keywords    = {processes, distributed computing},
3171    contributer = {pabuhr@plg},
3172    author      = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini}, 
3173    title       = {Hermes: A Language for Distributed Computing},
3174    publisher   = {Prentice-Hall},
3175    address     = {Englewood Cliffs},
3176    series      = {Innovative Technology},
3177    year        = 1991,
3178}
3179
3180@article{katzenelson83b,
3181    contributer = {gjditchfield@plg},
3182    author      = "Jacob Katzenelsen",
3183    title       = "Higher Level Programming and Data Abstraction---A Case Study using Enhanced C",
3184    journal     = spe,
3185    year        = 1983,
3186    volume      = 13,
3187    number      = 7,
3188    pages       = {577-596},
3189    month       = jul
3190}
3191
3192@techreport{Hoare73,
3193    keywords    = {},
3194    contributer = {gjditchfield@plg},
3195    author      = {C. A. R. Hoare},
3196    title       = {Hints on Programming Language Design},
3197    institution = {Stanford University Computer Science Department},
3198    year        = 1973,
3199    month       = dec,
3200    number      = {CS-73-403},
3201    note        = {Reprinted in \cite{pldesign}.}
3202}
3203
3204@article{Dijkstra71,
3205    keywords    = {monitor, secretary},
3206    contributer = {pabuhr@plg},
3207    author      = {E. W. Dijkstra},
3208    title       = {Hierarchical Ordering of Sequential Processes},
3209    journal     = acta,
3210    volume      = 1,
3211    pages       = {115-138},
3212    year        = 1971,
3213}
3214
3215@article{Buhr15a,
3216    keywords    = {software solution, mutual exclusion, performance experiment},
3217    author      = {Peter A. Buhr and David Dice and Wim H. Hesselink},
3218    title       = {High-Performance {$N$}-Thread Software Solutions for Mutual Exclusion},
3219    journal     = ccpe,
3220    volume      = 27,
3221    number      = 3,
3222    pages       = {651-701},
3223    month       = mar,
3224    year        = 2015,
3225}
3226
3227@article{Ackermann28,
3228    keywords    = {recursion, Ackermann function},
3229    contributer = {pabuhr@plg},
3230    author      = {Wilhelm Ackermann},
3231    title       = {Zum Hilbertschen Aufbau der reellen Zahlen},
3232    publisher   = {Springer},
3233    journal     = mathann,
3234    number      = 1,
3235    volume      = 99,
3236    pages       = {118-133},
3237    month       = dec,
3238    year        = 1928,
3239}
3240
3241@inproceedings{typeclass,
3242    keywords    = {Hindley/Miller type systems, Haskell},
3243    contributer = {gjditchfield@plg},
3244    author      = {Philip Wadler and Stephen Blott},
3245    title       = {How to make {\em Ad-Hoc} Polymorphism Less {\em Ad-Hoc}},
3246    booktitle   = popl,
3247    year        = 1989,
3248    pages       = {60-76},
3249    organization= {Association for Computing Machinery}
3250}
3251
3252% I
3253
3254@book{IBM370,
3255    keywords    = {370, IBM},
3256    contributer = {pabuhr@plg},
3257    key         = {IBM370},
3258    title       = {{IBM} System/370 Principles of Operation},
3259    publisher   = {IBM},
3260    number      = {GA22-7000-8},
3261    month       = oct,
3262    year        = 1981,
3263    edition     = {9th}
3264}
3265
3266@book{Icon,
3267    keywords    = {Icon},
3268    contributer = {pabuhr@plg},
3269    author      = {Ralph E. Griswold and Madge T. Griswold},
3270    title       = {The Icon Programming Language},
3271    publisher   = {Prentice-Hall},
3272    address     = {Englewood Cliffs},
3273    year        = 1983,
3274}
3275
3276@inproceedings{Valois94,
3277    keywords    = {lock free, queue},
3278    contributer = {pabuhr@plg},
3279    author      = {John D. Valois},
3280    title       = {Implementing Lock-Free Queues},
3281    booktitle   = {Seventh International Conference on Parallel and Distributed Computing Systems},
3282    address     = {Las Vegas, Nevada, U.S.A.},
3283    year        = {1994},
3284    pages       = {64-69},
3285}
3286
3287@article{Hehner81,
3288    keywords    = {concurrency, critical section, bakery algorithm},
3289    contributer = {pabuhr@plg},
3290    author      = {Eric C. R. Hehner and R. K. Shyamasundar},
3291    title       = {An Implementation of {P} and {V}},
3292    journal     = ipl,
3293    year        = 1981,
3294    month       = aug,
3295    volume      = 12,
3296    number      = 4,
3297    pages       = {196-198},
3298}
3299
3300@incollection{Steenkiste91,
3301    keywords    = {lisp},
3302    contributer = {gjditchfield@plg},
3303    author      = {Peter A. Steenkiste},
3304    title       = {The Implementation of Tags and Run-Time Checking},
3305    booktitle   = {Topics in Advanced Language Implementation},
3306    pages       = {3-24},
3307    year        = 1991,
3308    editor      = {Peter Lee},
3309    chapter     = {1},
3310    publisher   = {The MIT Press}
3311}
3312
3313@techreport{Roberts89,
3314    keywords    = {},
3315    contributer = {pabuhr@plg},
3316    author      = {Eric S. Roberts},
3317    title       = {Implementing Exceptions in {C}},
3318    institution = {Digital Systems Research Center},
3319    address     = {130 Lytton Avenue, Palo Alto, California, 94301},
3320    number      = {40},
3321    month       = mar,
3322    year        = 1989,
3323}
3324
3325@mastersthesis{Bilson03,
3326    keywords    = {Cforall, parametric polymorphism, overloading},
3327    contributer = {pabuhr@plg},
3328    author      = {Richard C. Bilson},
3329    title       = {Implementing Overloading and Polymorphism in Cforall},
3330    school      = {School of Computer Science, University of Waterloo},
3331    year        = 2003,
3332    address     = {Waterloo, Ontario, Canada, N2L 3G1},
3333    note        = {\href{http://plg.uwaterloo.ca/theses/BilsonThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-BilsonThesis.pdf}},
3334}
3335
3336@article{Buhr05b,
3337    keywords    = {monitor, automatic signal, implicit signal},
3338    contributer = {pabuhr@plg},
3339    author      = {Peter A. Buhr and Ashif S. Harji},
3340    title       = {Implicit-signal monitors},
3341    journal     = toplas,
3342    volume      = 27,
3343    number      = 6,
3344    month       = nov,
3345    year        = 2005,
3346    issn        = {0164-0925},
3347    pages       = {1270--1343},
3348    publisher   = {ACM Press},
3349    address     = {New York, NY, USA},
3350}
3351
3352@article{Baker77,
3353    author      = {Henry C. Baker, Jr. and Carl Hewitt},
3354    title       = {The Incremental Garbage Collection of Processes},
3355    journal     = {SIGART Bulletin},
3356    publisher   = {ACM},
3357    address     = {New York, NY, USA},
3358    month       = aug,
3359    year        = 1977,
3360    pages       = {55-59},
3361    issn        = {0163-5719},
3362}
3363
3364@book{Algol68,
3365    keywords    = {Algol68},
3366    contributer = {pabuhr@plg},
3367    author      = {C. H. Lindsey and S. G. van der Meulen},
3368    title       = {Informal Introduction to ALGOL 68},
3369    publisher   = {North-Holland},
3370    address     = {London},
3371    year        = 1977,
3372}
3373
3374@inproceedings{Cook90,
3375    keywords    = {f-bounded polymorhpism, lambda calculus},
3376    contributer = {gjditchfield@plg},
3377    author      = {William R. Cook and Walter L. Hill and Peter S. Canning},
3378    title       = {Inheritance is Not Subtyping},
3379    booktitle   = popl,
3380    year        = 1990,
3381    pages       = {125-135},
3382    organization= {Association for Computing Machinery},
3383    abstract    = {
3384        In typed object-oriented languages the subtype relation is
3385        typically based on the inheritance hierarchy.  This approach,
3386        however, leads either to insecure type-systems or to restrictions
3387        on inheritance that make it less flexible than untyped Smalltalk
3388        inheritance.  We present a new typed model of inheritance that
3389        allows more of the flexibility of Smalltalk inheritance within a
3390        statically-typed system.  Significant features of our analysis are
3391        the introduction of polymorphism into the typing of inheritance and
3392        the uniform application of inheritance to objects, classes and
3393        types.  The resulting notion of {\em type inheritance} allows us to
3394        show that the type of an inherited object is an inherited type but
3395        not always a subtype.
3396    }
3397}
3398
3399@inproceedings{MMR92,
3400    keywords    = {},
3401    contributer = {gjditchfield@plg},
3402    author      = {Robert E. Minnear and Patrick A. Muckelbauer and Vincent F. Russo},
3403    title       = {Integrating the {Sun Microsystems} {XDR/RPC} Protocols
3404                  into the {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Stream Model},
3405    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference Proceedings},
3406    year        = 1992,
3407    month       = aug,
3408    pages       = {295-312},
3409    organization= {USENIX Association},
3410    address     = {2590 Ninth Street, Suite 215, Berkeley, CA 94710},
3411    abstract    = {
3412        This paper reports our experiences integrating the Sun Microsystems
3413        RPC and XDR protocol specifications into the C++ model of
3414        input/output streams.  As part of the {\it Renaissance} operating
3415        system project, we wish to construct network servers and clients,
3416        written in C++, which interoperate with existing UNIX clients
3417        and servers.  We discovered that, although it would be possible to
3418        re-implement the procedural based XDR/RPC implementation
3419        distributed by Sun Microsystems in C++, it is far cleaner to
3420        integrate the protocols with the C++ I/O stream model.  We
3421        feel the resulting model provides a cleaner way of implementing RPC
3422        clients and servers without losing functionality or compatibility
3423        with existing clients and servers.
3424    }
3425}
3426
3427@inproceedings{Zuo08,
3428    keywords    = {shared memory systems,intelligent multiport memory,multiprocessors systems,shared memory system},
3429    author      = {Wang Zuo and Wang Zuo and Li Jiaxing},
3430    title       = {An Intelligent Multi-Port Memory},
3431    booktitle   = {Symposium on Intelligent Information Technology Application Workshops, Shanghai, China},
3432    month       = dec,
3433    year        = 2008,
3434    pages       = {251-254},
3435    publisher   = {IEEE Computer Society},
3436    address     = {Los Alamitos, CA, USA},
3437}
3438
3439@book{Francez96,
3440    keywords    = {await, formal},
3441    contributer = {pabuhr@plg},
3442    author      = {Nissim Francez and Ira R. Forman},
3443    title       = {Interacting Processes: A Multiparty Approach to Coordinated Distributed Programming},
3444    publisher   = {Addison-Wesley},
3445    address     = {Boston},
3446    series      = {ACM Press Books},
3447    year        = 1996,
3448}
3449
3450@article{Labreche90,
3451    keywords    = {concurrency, C++},
3452    contributer = {pabuhr@plg},
3453    author      = {Pierre Labr{\`{e}}che},
3454    title       = {Interactors: A Real-Time Executive with Multiparty Interactions in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
3455    journal     = sigplan,
3456    volume      = 25,
3457    number      = 4,
3458    month       = apr,
3459    year        = 1990,
3460    pages       = {20-32},
3461}
3462
3463@inproceedings{interfaces,
3464    keywords    = {parameterized interfaces, classes, recursion/inheritance},
3465    contributer = {gjditchfield@plg},
3466    author      = {Peter S. Canning and William R. Cook and Walter L. Hill and
3467        Walter G. Olthoff},
3468    title       = {Interfaces for Strongly-Typed Object-Oriented Programming},
3469    crossref    = "OOPSLA89",
3470    pages       = {457-467},
3471    abstract    = {
3472        This paper develops a system of explicit interfaces for
3473        object-oriented programming.  The system provides the benefits of
3474        module interfaces found in languages like Ada and Modula-2 while
3475        preserving the expressiveness that gives untyped object-oriented
3476        languages like Smalltalk their flexibility.  Interfaces are
3477        interpreted as polymorphic types to make the system sufficiently
3478        powerful.  We use interfaces to analyze the properties of
3479        inheritance, and identify three distinct kinds of inheritance in
3480        object-oriented programming, corresponding to objects, classes, and
3481        interfaces, respectively.  Object interfaces clarify the
3482        distinction between interface containment and inheritance and give
3483        insight into limitations caused by equating the notions of type and
3484        class in many typed object-oriented programming languages.
3485        Interfaces also have practical consequences for design,
3486        specification, and maintenance of object-oriented systems.
3487    }
3488}
3489
3490@phdthesis{Girard72,
3491    keywords    = {universal quantification},
3492    contributer = {gjditchfield@plg},
3493    author      = {J.-Y. Girard},
3494    title       = {Interpretation fonctionelle et elimination des coupures de
3495        l'arithmetique d'ordre superieur},
3496    school      = {Universite Paris},
3497    year        = {1972}
3498}
3499
3500@article{Karaorman93,
3501    keywords    = {Eiffel, concurrency libraries},
3502    contributer = {pabuhr@plg},
3503    author      = {Murat Karaorman and John Bruno},
3504    title       = {Introducing Concurrency to a Sequential Language},
3505    journal     = cacm,
3506    month       = sep,
3507    year        = 1993,
3508    volume      = 36,
3509    number      = 9,
3510    pages       = {103-116}
3511}
3512
3513@book{Corman92,
3514    keywords    = {PRAM, parallel algorithms},
3515    contributer = {pabuhr@plg},
3516    author      = {Thomas H. Cormen and Charles E. Leiserson and Ronald L. Rivest},
3517    title       = {Introduction to Algorithms},
3518    publisher   = {MIT Press/McGraw-Hill},
3519    address     = {Cambridge},
3520    series      = {Electrical Engineering and Computer Science Series},
3521    year        = 1992,
3522}
3523
3524@book{Hopcroft79,
3525    keywords    = {finite-state machine, push-dowm automata},
3526    contributer = {pabuhr@plg},
3527    author      = {John E. Hopcroft and Jeffrey D. Ullman},
3528    title       = {Introduction to Automata Theory, Languages and Computation},
3529    publisher   = {Addison-Wesley},
3530    address     = {Boston},
3531    year        = 1979,
3532}
3533
3534@techreport{walker87,
3535    keywords    = {CCS},
3536    contributer = {gjditchfield@plg},
3537    author      = {David Walker},
3538    title       = {Introduction to a Calculus of Communicating Systems},
3539    institution = {Laboratory for Foundations of Computer Science},
3540    year        = 1987,
3541    address     = {Department of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ},
3542    month       = jun,
3543    number      = {ECS-LFCS-87-22},
3544}
3545
3546@article{katzenelson83a,
3547    author      = {Jacob Katzenelson},
3548    title       = {Introduction to Enhanced C (EC)},
3549    journal     = spe,
3550    volume      = 13,
3551    number      = 7,
3552    year        = 1983,
3553    month       = jul,
3554    pages       = {551-576},
3555}
3556
3557@book{Deitel90,
3558    keywords    = {concurrency, operating systems},
3559    contributer = {pabuhr@plg},
3560    author      = {Harvey M. Deitel},
3561    title       = {An Introduction to Operating Systems},
3562    publisher   = {Addison-Wesley},
3563    address     = {Boston},
3564    year        = 1990,
3565    edition     = {2nd},
3566}
3567
3568@techreport{Birrell89,
3569    keywords    = {threads, monitors},
3570    contributer = {pabuhr@plg},
3571    author      = {Andrew D. Birrell},
3572    title       = {An Introduction to Programming with Threads},
3573    institution = {Digital Systems Research Center},
3574    address     = {130 Lytton Avenue, Palo Alto, California, 94301},
3575    number      = {35},
3576    month       = jan,
3577    year        = 1989,
3578    note        = {{\textsf{http://www.hpl.hp.com/\-techreports/\-Compaq-DEC/\-SRC-RR-35.html}}},
3579
3580}
3581
3582@article{t/o,
3583    keywords    = {Trellis/Owl},
3584    contributer = {gjditchfield@plg},
3585    author      = {Craig Schaffert and Topher Cooper and Bruce Bullis and Mike Kilian and Carrie Wilpot},
3586    title       = {An Introduction to Trellis/Owl},
3587    journal     = sigplan,
3588    volume      = 21,
3589    number      = 11,
3590    year        = 1986,
3591    month       = nov,
3592    pages       = {9-16},
3593}
3594
3595@inproceedings{Hibbard77,
3596    keywords    = {algol-68, concurrency},
3597    contributer = {pabuhr@plg},
3598    author      = {Peter G. Hibbard and P. Knueven and B. W. Leverett},
3599    title       = {Issues in the Efficient Implementation and Use of Multiprocessing in {Algol} 68},
3600    booktitle   = {Proceedings of the 5th Annual iii Conference},
3601    address     = {Guidel, France},
3602    month       = may,
3603    year        = 1977,
3604    pages       = {203-221}
3605}
3606
3607@inproceedings{Miller97,
3608    keywords    = {exception handling, software-engineering},
3609    contributer = {pabuhr@plg},
3610    author      = {Robert Miller and Anand Tripathi},
3611    title       = {Issues with Exception Hnadling in Object-Oriented Systems},
3612    booktitle   = {ECOOP'97},
3613    publisher   = {Springer},
3614    volume      = 1241,
3615    series      = {Lecture Notes in Computer Science},
3616    year        = 1997,
3617    pages       = {85-103}
3618}
3619   
3620@article{Murer96,
3621    keywords    = {interators, generators, cursors},
3622    contributer = {pabuhr@plg},
3623    author      = {Stephan Murer and Stephen Omohundro and David Stoutamire and Clemens Szyperski},
3624    title       = {Iteration Abstraction in Sather},
3625    journal     = toplas,
3626    month       = jan,
3627    year        = 1996,
3628    volume      = 18,
3629    number      = 1,
3630    pages       = {1-15},
3631}
3632
3633% J
3634                 
3635@book{Java,
3636    keywords    = {Java},
3637    contributer = {pabuhr@plg},
3638    author      = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha},
3639    title       = {The {Java} Language Specification},
3640    publisher   = {Addison-Wesley},
3641    address     = {Reading},
3642    year        = 2000,
3643    edition     = {2nd},
3644}
3645
3646@manual{Java8,
3647    keywords    = {Java SE 8},
3648    contributer = {pabuhr@plg},
3649    author      = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha and Alex Buckley},
3650    title       = {{Java} Language Spec.},
3651    organization= {Oracle},
3652    publisher   = {Oracle},
3653    year        = 2015,
3654    edition     = {Java SE8},
3655}
3656
3657@manual{JUC,
3658    keywords    = {Java concurrency library},
3659    contributer = {pabuhr@plg},
3660    title       = {java.util.concurrency},
3661    author      = {Doug Lea},
3662    organization= {Oracle},
3663    year        = 2014,
3664    note        = {\href{http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/package-summary.html}{\textsf{http://docs.oracle.com/\-javase/7/\-docs/\-api/\-java/\-util/\-concurrent/\-package-summary.html}}},
3665}
3666
3667% K
3668
3669@article{Duggan96,
3670    keywords    = {concurrency, critical section},
3671    contributer = {pabuhr@plg},
3672    author      = {Dominic Duggan and Gordon V. Cormack and John Ophel},
3673    title       = {Kinded Type Inference for Parametric Overloading},
3674    journal     = acta,
3675    volume      = 33,
3676    number      = 1,
3677    year        = 1996,
3678    pages       = {21-68},
3679}
3680
3681@article{Peter35,
3682    keywords    = {recursion, Ackermann function},
3683    contributer = {pabuhr@plg},
3684    author      = {R{\'{o}}zsa P{\'{e}}ter},
3685    title       = {Konstruktion nichtrekursiver Funktionen},
3686    publisher   = {Springer},
3687    journal     = mathann,
3688    number      = 111,
3689    volume      = 1,
3690    pages       = {42-60},
3691    month       = dec,
3692    year        = 1935,
3693}
3694
3695% L
3696
3697@TechReport{WVWR88:L,
3698    contributer = {gjditchf@plg},
3699    author      = {Hanno Wupper and Jan Vytopil and Martin Wieczorek and Dick de Reus},
3700    title       = {{L}_{3333}: A Simple Language with Static Typing of Hard Real-Time Constraints},
3701    institution = {Department of Informatics, Faculty of Science, Catholic University Nijmegen},
3702    year        = 1988,
3703    number      = {88-3},
3704    address     = {Katholieke Universiteit Nijmegen, Fakulteit der Wiskunde
3705                   en Natuurwetenschappen, Infomatica V, Toernooiveld, 6512
3706                   ED Nijmegen, The Netherlands},
3707    month       = apr,
3708    annote      = {A polymorphic typed lambda calculus with \begin{itemize}
3709                   \item A trivial type, ``!'', with a single element.
3710                   \item Labelled types, distinct from each other.
3711                   ``!False'' and ``!True'' are distinct types, each
3712                   containing a single value serving as boolean false and
3713                   true.  ``2'' is an abbreviation for ``!0 succ succ'', the
3714                   type containing only 2.
3715                   \item Disjunction types ``\{| !False, !True |\}''.  Interval
3716                   types are abbreviations for disjunctions.
3717                   \item Conjunction types ``\{\& real Re, real Im \&\}'', where
3718                   ``Re'' and ``Im'' are type labels that distinguish between the
3719                   fields.
3720                   \item Pair types ``\{^ a, b ^\}'', for use in recursive types
3721                   and dyadic infix functions.
3722                   \item Function types, universal types, existential types,
3723                   and subtyping (viewed as coercion), as in Fun.
3724                   \end{itemize}
3725                   Disjunctions and conjunctions types are associative and
3726                   commutative (i.e. flat).  Each type has a matching
3727                   constructor.  Functions use pattern matching on type
3728                   labels to strip labels and extract conjunction fields:
3729                   \begin{verbatim}
3730                   \lambda n {0...1000000 Guilders}. ... n ...
3731                   -- both argument and n are amounts in Guilders.
3732                   \lambda n {0...1000000} Guilders. ... n ...
3733                   -- argument in Guilders, but n is in 0...1000000.
3734                   \end{verbatim}
3735                   ``Function bundles'' (conjunctions of functions), applied
3736                   to arguments, replace Dijkstra's guarded if...fi, but the
3737                   bundles are first-class and the guards are part of their
3738                   type.
3739
3740                   The same trick used to define the type ``2'' is used to
3741                   move absolute times into the type system, to allow static
3742                   checking. ``0`'' denotes a time before the system begins
3743                   execution.  ``\#`'' denotes ``eventually'', and ``?`''
3744                   denotes ``maybe never''.  ``a\\t'' and ``a@t'' are types
3745                   of a value of type a that will be available no later
3746                   (earlier) than time t.  Universals and existentials use
3747                   subtyping to parameterize functions by start time:
3748                   \begin{verbatim}
3749                   let f {\forall t > \#`}. {a\t} \on {b\t+d}
3750                   f{then} y -- argument y must be available at time ``then''.
3751                   \end{verbatim}
3752                   Functions can return before their arguments are available
3753                   if they don't use them.  However, function {\em bundles}
3754                   can't return until their result type is known, so the
3755                   lower and upper time bounds of the bundle are the
3756                   second-last upper bound of the component functions: at
3757                   that time, there is only one alternative left.
3758
3759                   Explicit time parameterization allows slack in time
3760                   specification.  Tools could point out slack or determine
3761                   degree of parallelism.}
3762}
3763
3764@mastersthesis{Clarke90,
3765    keywords    = {concurrency, postponing requests},
3766    contributer = {pabuhr@plg},
3767    author      = {Charles L. A. Clarke},
3768    title       = {Language and Compiler Support for Synchronous Message Passing Architectures},
3769    school      = {University of Waterloo},
3770    year        = 1990,
3771    address     = {Waterloo, Ontario, Canada, N2L 3G1}
3772}
3773
3774@article{Tennent77,
3775    keywords    = {abstraction, correspondence, Pascal},
3776    contributer = {gjditchfield@plg},
3777    author      = {R. D. Tennent},
3778    title       = {Language Design Methods Based on Semantic Principles},
3779    journal     = acta,
3780    year        = 1977,
3781    volume      = 8,
3782    number      = 2,
3783    pages       = {97-112},
3784    note        = {reprinted in \cite{pldesign}},
3785    abstract    = {
3786        Two language design methods based on principles derived from the
3787        denotational approach to programming language semantics are
3788        described and illustrated by an application to the language Pascal.
3789        The principles are, firstly, the correspondence between parametric
3790        and declarative mechanisms and secondly, a principle of abstraction
3791        for programming languages adapted from set theory.  Several useful
3792        extensions and generalizations of Pascal emerge by applying these
3793        principles, including a solution to the array parameter problem,
3794        and a modularization facility.
3795    },
3796}
3797
3798@article{Liskov86,
3799    keywords    = {synchronous communication, concurrency},
3800    contributer = {pabuhr@plg},
3801    author      = {Barbara Liskov and Maurice Kerlihy and Lucy Gilbert},
3802    title       = {Limitations of Synchronous Communication with Static
3803                   Process Structure in Languages for Distributed Computing},
3804    journal     = {},
3805    volume      = {},
3806    number      = {},
3807    month       = {},
3808    year        = {},
3809    pages       = {},
3810}
3811
3812@article{Linda,
3813    keywords    = {Linda, concurrency},
3814    contributer = {pabuhr@plg},
3815    author      = {Nicholas Carriero and David Gelernter},
3816    title       = {Linda in Context},
3817    journal     = cacm,
3818    volume      = 32,
3819    number      = 4,
3820    month       = apr,
3821    year        = 1989,
3822    pages       = {444-458}
3823}
3824
3825@book{Weissman67,
3826    keywords    = {lisp},
3827    author      = {Clark Weissman},
3828    title       = {Lisp 1.5 Primer},
3829    publisher   = {Dickenson Publishing},
3830    address     = {Belmont},
3831    year        = 1967,
3832}
3833
3834@article{Sundell08,
3835    keywords    = {lock free, deque},
3836    contributer = {pabuhr@plg},
3837    author      = {H{\r{a}}kan Sundell and Philippas Tsigas},
3838    title       = {Lock-free Deques and Doubly Linked Lists},
3839    journal     = {J. Parallel Distrib. Comput.},
3840    volume      = 68,
3841    number      = 7,
3842    year        = 2008,
3843    pages       = {1008-1020},
3844}
3845
3846@article{Cormack89,
3847    keywords    = {parsing, LR, error recovery},
3848    contributer = {pabuhr@plg},
3849    author      = {Gordon V. Cormack},
3850    title       = {An {LR} Substring Parser for Noncorrecting Syntax Error Recovery},
3851    journal     = sigplan,
3852    volume      = 24,
3853    number      = 7,
3854    month       = jul,
3855    year        = 1989,
3856    pages       = {161-169},
3857    note        = {Proceedings of the {SIGPLAN}~'89 Conference on Programming Language Design and Implementation}
3858}
3859
3860% M
3861
3862@book{M68K,
3863    keywords    = {M680XX, Motorola},
3864    contributer = {pabuhr@plg},
3865    key         = {Motorola},
3866    title       = {M68000 Family Programmer's Reference Manual},
3867    publisher   = {Motorola},
3868    year        = 1992,
3869}
3870
3871@article{c++libs,
3872    keywords    = {directory structure},
3873    contributer = {gjditchfield@plg},
3874    author      = {J. M. Coggins and G. Bollella},
3875    title       = {Managing {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Libraries},
3876    journal     = sigplan,
3877    year        = 1989,
3878    month       = jun, volume = 24, number = 6, pages = {37-48},
3879    abstract    = {
3880        This paper describes a scheme we have used to manage a large
3881        library written in the C++ language.  The scheme imposes a
3882        directory structure, and represents dependency hierarchy in a
3883        globally accessible file we call the 'prelude' file.  We also
3884        discuss the structure of the description files (makefiles) used
3885        with the UNIX options we have found to be useful in reducing the
3886        size of the library, and how to minimize recompilation time after
3887        trivial changes to the source code of the library.
3888    }
3889}
3890
3891@inproceedings{mprof,
3892    keywords    = {malloc},
3893    contributer = {gjditchfield@plg},
3894    author      = {Benjamin Zorn and Paul Hilfinger},
3895    title       = {A Memory Allocation Profiler for {C} and Lisp Programs},
3896    booktitle   = {Summer 1988 {USENIX} proceedings},
3897    year        = 1988
3898}
3899
3900@manual{MMTk,
3901    keywords    = {Java memory management},
3902    contributer = {pabuhr@plg},
3903    title       = {MMTk: The Memory Management Toolkit},
3904    author      = {Steve Blackburn and Robin Garner and Daniel Frampton},
3905    month       = sep,
3906    year        = 2006,
3907    note        = {\textsf{http://cs.anu.edu.au/\-\char`\~Robin.Garner/\-mmtk-guide.pdf}},
3908}
3909
3910@article{Adve10,
3911    keywords    = {Java memory management},
3912    contributer = {pabuhr@plg},
3913    author      = {Sarita V. Adve and Hans-J. Boehm},
3914    title       = {Memory Models: A Case for Rethinking Parallel Languages and Hardware},
3915    journal     = cacm,
3916    volume      = 53,
3917    number      = 8,
3918    month       = aug,
3919    year        = 2010,
3920    pages       = {90-101},
3921    publisher   = {ACM},
3922    address     = {New York, NY, USA},
3923}
3924@techreport{Mesa,
3925    keywords    = {monitors, packages},
3926    contributer = {pabuhr@plg},
3927    author      = {James G. Mitchell and William Maybury and Richard Sweet},
3928    title       = {Mesa Language Manual},
3929    institution = {Xerox Palo Alto Research Center},
3930    number      = {CSL--79--3},
3931    month       = apr,
3932    year        = 1979
3933}
3934
3935@article{Andrews89,
3936    keywords    = {semaphore, split-binary, baton},
3937    contributer = {pabuhr@plg},
3938    author      = {Gregory R. Andrews},
3939    title       = {A Method for Solving Synronization Problems},
3940    journal     = scp,
3941    volume      = 13,
3942    number      = 4,
3943    month       = dec,
3944    year        = 1989,
3945    pages       = {1-21},
3946}
3947
3948@inproceedings{Mitchell78,
3949    keywords    = {Mesa},
3950    contributer = {pabuhr@plg},
3951    author      = {James G. Mitchell},
3952    title       = {Mesa: A Designer's User Perspective},
3953    booktitle   = {Spring CompCom 78},
3954    organization= {Sixteenth IEEE Computer Society International Conference},
3955    address     = {San Francisco, California, U.S.A.},
3956    month       = feb,
3957    year        = 1978,
3958    pages       = {36-39},
3959    note        = {IEEE Catalog No. 78CH1328-4C},
3960}
3961
3962@article{Gentleman81,
3963    keywords    = {messages, concurrency},
3964    contributer = {pabuhr@plg},
3965    author      = {W. Morven Gentleman},
3966    title       = {Message Passing between Sequential Processes:
3967                   the Reply Primitive and the Administrator Concept},
3968    journal     = spe,
3969    month       = may,
3970    year        = 1981,
3971    volume      = 11,
3972    number      = 5,
3973    pages       = {435-466}
3974}
3975
3976@article{Cormack88,
3977    keywords    = {concurrency},
3978    contributer = {pabuhr@plg},
3979    author      = {G. V. Cormack},
3980    title       = {A Micro Kernel for Concurrency in C},
3981    journal     = spe,
3982    month       = may,
3983    year        = 1988,
3984    volume      = 18,
3985    number      = 4,
3986    pages       = {485-491}
3987}
3988
3989@article{Buhr90a,
3990    keywords    = {concurrency, light-weight process, shared memory},
3991    contributer = {pabuhr@plg},
3992    author      = {Peter A. Buhr and Richard A. Stroobosscher},
3993    title       = {The $\mu${S}ystem: Providing Light-Weight Concurrency on Shared-Memory Multiprocessor Computers Running {UNIX}},
3994    journal     = spe,
3995    volume      = 20,
3996    number      = 9,
3997    month       = sep,
3998    year        = 1990,
3999    pages       = {929-963},
4000}
4001
4002@techreport{uSystem,
4003    keywords    = {C, concurrency, light-weight process, shared memory},
4004    contributer = {pabuhr@plg},
4005    author      = {Peter A. Buhr and Hamish I. Macdonald and Richard A. Stroobosscher},
4006    title       = {$\mu${S}ystem Annotated Reference Manual, Version 4.4.3},
4007    institution = {Department of Computer Science, University of Waterloo},
4008    address     = {Waterloo, Ontario, Canada, N2L 3G1},
4009    month       = sep,
4010    year        = 1994,
4011    note        = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-uSystem/\-uSystem.ps.gz}}},
4012}
4013
4014@book{Mips4000,
4015    key         = {Mips4000},
4016    title       = {MIPS R4000 Microprocessor User's Manual},
4017    publisher   = {MIPS Computer Systems Inc},
4018    year        = 1991,
4019}
4020
4021@inproceedings{Mjolner,
4022    keywords    = {Mjolner, hierarchical windows},
4023    contributer = {pabuhr@plg},
4024    author      = {G\"{o}rel Hedin and Boris Magnusson},
4025    title       = {The Mj{\o}lner Environment: Direct Interaction with Abstractions},
4026    booktitle   = {Proceedings of the European Conference on Object Oriented Programming},
4027    organization= {ECOOP'88},
4028    publisher   = {Springer},
4029    volume      = 322,
4030    editor      = {S. Gjessing and K. Nygaard},
4031    address     = {Oslo, Norway},
4032    month       = aug,
4033    year        = 1988,
4034    pages       = {41-54},
4035    note        = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
4036}
4037
4038@article{Skillicorn98,
4039    keywords    = {parallel models},
4040    contributer = {pabuhr@plg},
4041    author      = {David B. Skillicorn and Domenico Talia},
4042    title       = {Models and Languages for Parallel Computation},
4043    journal     = acmcs,
4044    volume      = 30,
4045    number      = 2,
4046    month       = jun,
4047    year        = 1998,
4048    pages       = {123-169},
4049}
4050
4051@article{Werther96,
4052    keywords    = {C++, language syntax},
4053    contributer = {pabuhr@plg},
4054    author      = {Ben Werther and Damian Conway},
4055    title       = {A Modest Proposal: {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Resyntaxed},
4056    journal     = sigplan,
4057    volume      = 31,
4058    number      = 11,
4059    month       = nov,
4060    year        = 1996,
4061    pages       = {74-82},
4062}
4063
4064@book{Alexandrescu01,
4065    keywords    = {c design-patterns programming},
4066    contributer = {pabuhr@plg},
4067    author      = {Andrei Alexandrescu},
4068    title       = {Modern C++ Design: Generic Programming and Design Patterns Applied},
4069    publisher   = {Addison-Wesley Professional},
4070    address     = {Boston},
4071    month       = feb,
4072    year        = 2001,
4073    isbn        = {0201704315},
4074}
4075
4076@book{Tanenbaum92,
4077    keywords    = {concurrency, operating systems},
4078    contributer = {pabuhr@plg},
4079    author      = {Andrew S. Tanenbaum},
4080    title       = {Modern Operating Systems},
4081    publisher   = {Prentice-Hall},
4082    address     = {Englewood Cliffs},
4083    year        = 1992,
4084}
4085
4086@article{Wirth77,
4087    keywords    = {modules, coroutines},
4088    contributer = {pabuhr},
4089    author      = {Niklaus Wirth},
4090    title       = {Modula: a Language for Modular Multiprogramming},
4091    journal     = spe,
4092    month       = {January--February},
4093    year        = 1977,
4094    volume      = 7,
4095    number      = 1,
4096    pages       = {3-35},
4097}
4098
4099@book{Harbison92,
4100    contributer = {mhcoffin},
4101    author      = {Samuel P. Harbison},
4102    title       = {Modula-3},
4103    publisher   = {Prentise Hall, Inc.},
4104    year        = {1992},
4105    comment     = {This is a textbook for learning Modula-3.}
4106}
4107
4108@techreport{Modula-3:old,
4109    keywords    = {Modula-3, inheritance, type extension},
4110    contributer = {gjditchfield@plg},
4111    author      = {Luca Cardelli and James Donahue and Lucille Glassman and Mick
4112                   Jordan and Bill Kalsow and Greg Nelson},
4113    title       = {Modula-3 Report},
4114    institution = {Systems Research Center},
4115    address     = {130 Lytton Avenue, Palo Alto, California  94301},
4116    month       = aug,
4117    year        = 1988,
4118    number      = 31
4119}
4120 
4121@article{Dueck90,
4122    keywords    = {attribute grammars},
4123    contributer = {pabuhr@plg},
4124    author      = {Gerald D. P. Dueck and Gordon V. Cormack},
4125    title       = {Modular Attribute Grammars},
4126    journal     = {The Computer Journal},
4127    month       = apr,
4128    year        = 1990,
4129    volume      = 33,
4130    number      = 2,
4131    pages       = {164-172},
4132}
4133
4134@article{Yemini85,
4135    keywords    = {exception handling},
4136    contributer = {pabuhr@plg},
4137    author      = {Shaula Yemini and Daniel M. Berry},
4138    title       = {A Modular Verifiable Exception-Handling Mechanism},
4139    journal     = toplas,
4140    month       = apr,
4141    year        = 1985,
4142    volume      = 7,
4143    number      = 2,
4144    pages       = {214-243},
4145}
4146
4147@article{Buhr95b,
4148    keywords    = {concurrency, monitors, classification},
4149    contributer = {pabuhr@plg},
4150    author      = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
4151    title       = {Monitor Classification},
4152    journal     = acmcs,
4153    volume      = 27,
4154    number      = 1,
4155    month       = mar,
4156    year        = 1995,
4157    pages       = {63-107},
4158}
4159
4160@article{Hoare74,
4161    keywords    = {monitor},
4162    contributer = {pabuhr@plg},
4163    author      = {C. A. R. Hoare},
4164    title       = {Monitors: An Operating System Structuring Concept},
4165    journal     = cacm,
4166    volume      = 17,
4167    number      = 10,
4168    month       = oct,
4169    year        = 1974,
4170    pages       = {549-557},
4171    annote      = {
4172    }
4173}
4174
4175@inbook{Buhr99a,
4176    keywords    = {concurrency, monitors, classification},
4177    contributer = {pabuhr@plg},
4178    author      = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
4179    title       = {Encyclopedia of Computer Science and Technology},
4180    chapter     = {Monitor Taxonomy},
4181    publisher   = {Marcel Dekker, Inc},
4182    volume      = {40, supplement 25},
4183    year        = 1999,
4184    pages       = {191-212},
4185}
4186%    editor     = {Allen Kent and James G. Williams},
4187
4188@manual{MPI,
4189    keywords    = {MPI},
4190    contributer = {pabuhr@plg},
4191    title       = {MPI: A Message-Passing Interface Standard, Version 3.1},
4192    organization= {Message Passing Interface Forum},
4193    address     = {University of Tennessee, Knoxville, Tennessee},
4194    month       = jun,
4195    year        = 2015,
4196    note        = {\href{http://www.mpi-forum.org/docs/mpi-3.1/mpi31-report.pdf}{\textsf{http://www.mpi-forum.org/\-docs/\-mpi-3.1/\-mpi31-report.pdf}}},
4197}
4198
4199@article{multilisp,
4200    keywords    = {futures, scheme},
4201    contributer = {gjditchfield@plg},
4202    author      = {Halstead, Jr.,Robert H.},
4203    title       = {Multilisp: A Language for Concurrent Symbolic Programming},
4204    journal     = toplas,
4205    volume      = 7,
4206    number      = 4,
4207    pages       = {501-538},
4208    month       = oct,
4209    year        = 1985,
4210    comment     = {
4211        (future E) begins evaluating the expression E, and
4212        returns a ``future'' representing the value.  When evaluation is
4213        finished, the value of E replaces the future.  Operations that need
4214        the future's value suspend until it is available.  Assignment and
4215        parameter passing do not suspend.  Future introduces concurrency
4216        between the calculation of a value and its use; reference to
4217        futures is a synchronization mechanism.
4218
4219        (pcall F A B ... C) concurrently evaluates F, A, B, ... C, and then
4220        applies F to the arguments.  pcall can be built from future and a
4221        ``touch'' operation.  pcall is included because it may not be easy
4222        to determine that there are no critical sections between the future
4223        expression and the code between the future call and the value's
4224        first use.
4225
4226        (delay E) is like future, but E's process does not begin until its
4227        value is needed.  It provides lazy evaluation.  Replacing delay
4228        with future would launch an infinite number of processes.
4229    }
4230}
4231
4232@techreport{Bretthauer89,
4233    keywords    = {multiple inheritance},
4234    contributer = {pabuhr@plg},
4235    author      = {Harry Bretthauer and Thomas Christaller and J\"{u}rgen Kopp}, 
4236    title       = {Multiple vs. Single Inheritance in Object-oriented Programming Languages. What do we really want?},
4237    institution = {Gesellschaft F\"{u}r Mathematik und Datenverarbeitung mbH},
4238    address     = {Schlo$\beta$ Birlinghoven, Postfach 12 40, D-5205 Sankt Augustin 1, Deutschland},
4239    number      = {Arbeitspapiere der GMD 415},
4240    month       = nov,
4241    year        = 1989,
4242}
4243
4244@inproceedings{c++:multinh,
4245    keywords    = {C++, multiple inheritance, implementation},
4246    contributer = {gjditchfield@plg},
4247    author      = {Bjarne Stroustrup},
4248    title       = {Multiple Inheritance for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4249    booktitle   = {Proceedings of the Spring '87 EUUG Conference},
4250    month       = may, year = 1987
4251}
4252
4253@inproceedings{st:mult,
4254    keywords    = {smalltalk, multiple inheritance, implementation},
4255    contributer = {gjditchfield@plg},
4256    author      = {Daniel H. H. Ingalls and A. H. Borning},
4257    title       = {Multiple Inheritance in Smalltalk-80},
4258    booktitle   = {Proceedings of the National Conference on Artificial Intelligence},
4259    month       = aug,
4260    year        = 1982,
4261    pages       = {234-238},
4262    organization= {American Association for Artificial Intelligence},
4263    comment     = {
4264        Methods are looked up in the current class, the superclasses, the
4265        supersuperclasses, etc.  The same method can be inherited
4266        repeatedly, but having different methods for the same message is an
4267        error.  Only one copy is made for multiply-inherited fields.
4268
4269        {\tt X.m} is the method m in superclass X.  {\tt super.m} is
4270        allowed if there is no ambiguity; {\tt self super.m} replaces {\tt
4271        super m}.  {\tt all.m} invokes all inherited versions of m.
4272
4273        Methods on the first-superclass chain are found as usual.  Methods
4274        from other superclasses are copied into the class dictionary.  An
4275        error method is created if inherited methods conflict.  The parser
4276        is changed to allow compound selectors.  {\tt Object
4277        messageNotUnderstood} is changed to look for compound selectors and
4278        dynamically add a method with the right name and body to the class.
4279        When methods are edited, they are copied into subclasses and
4280        compound selector versions are deleted, as appropriate.
4281    }
4282}
4283
4284@article{Lamport86I,
4285    keywords    = {software solutions, N-thread, mutual exclusions},
4286    contributer = {pabuhr@plg},
4287    author      = {Leslie Lamport},
4288    title       = {The Mutual Exclusion Problem: Part\,{I}--A Theory of Interprocess Communication},
4289    journal     = jacm,
4290    volume      = 33,
4291    number      = 2,
4292    month       = apr,
4293    year        = 1986,
4294    pages       = {313--326},
4295    numpages    = {14},
4296    publisher   = {ACM},
4297    address     = {New York, NY, USA},
4298}
4299
4300@article{Lamport86II,
4301    keywords    = {software solutions, N-thread, mutual exclusions},
4302    contributer = {pabuhr@plg},
4303    author      = {Leslie Lamport},
4304    title       = {The Mutual Exclusion Problem: Part\,{II}--Statement and Solutions},
4305    journal     = jacm,
4306    volume      = 33,
4307    number      = 2,
4308    month       = apr,
4309    year        = 1986,
4310    pages       = {327--348},
4311    numpages    = {22},
4312    publisher   = {ACM},
4313    address     = {New York, NY, USA},
4314}
4315
4316@article{Burns78,
4317    keywords    = {hardware, N-process solution, O(N)},
4318    contributer = {pabuhr@plg},
4319    author      = {James E. Burns},
4320    title       = {Mutual Exclusion with Linear Waiting Using Binary Shared Variables},
4321    journal     = {SIGACT News},
4322    volume      = 10,
4323    number      = 2,
4324    month       = {Summer},
4325    year        = 1978,
4326    pages       = {42-47},
4327}
4328
4329@inproceedings{Burns80,
4330    keywords    = {N-process software solution},
4331    contributer = {pabuhr@plg},
4332    author      = {James E. Burns and Nancy A. Lynch},
4333    title       = {Mutual Exclusion using Indivisible Reads and Writes},
4334    booktitle   = {Proceedings of the 18th Annual Allerton Conference on Communications, Control and Computing, Monticello, Illinois, USA},
4335    year        = 1980,
4336    pages       = {833-842},
4337    note        = {\href{http://groups.csail.mit.edu/tds/papers/Lynch/allertonconf.pdf}{\textsf{http://\-groups.csail.mit.edu/\-tds/\-papers/\-Lynch/\-allertonconf.pdf}} [Accessed on March 2014]},
4338    optnote     = {\textsf{http://\-groups.csail.mit.edu/\-tds/\-papers/\-Lynch/\-allertonconf.pdf}},
4339}
4340
4341@article{Peterson81,
4342    keywords    = {concurrency, critical section},
4343    contributer = {pabuhr@plg},
4344    author      = {G. L. Peterson},
4345    title       = {Myths About the Mutual Exclusion Problem},
4346    journal     = ipl,
4347    year        = 1981,
4348    month       = jun,
4349    volume      = 12,
4350    number      = 3,
4351    pages       = {115-116},
4352}
4353
4354% N
4355
4356@article{Haddon77,
4357    keywords    = {monitors, nested monitor calls},
4358    contributer = {pabuhr@plg},
4359    author      = {Bruce K. Haddon},
4360    title       = {Nested Monitor Calls},
4361    journal     = osr,
4362    volume      = 11,
4363    number      = 4,
4364    month       = oct,
4365    year        = 1977,
4366    pages       = {18-23},
4367}
4368
4369@inproceedings{nesting,
4370    keywords    = {},
4371    contributer = {gjditchfield@plg},
4372    author      = {Lori A. Clarke and Jack C. Wilenden and Alexander L. Wolf},
4373    title       = {Nesting in {Ada} Programs is for the Birds},
4374    booktitle   = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada}
4375        Programming Language},
4376    year        = 1980,
4377    month       = dec, pages = {139-145},
4378    note        = {SIGPLAN Notices, v. 15, n. 11},
4379    abstract    = {
4380        Given a data abstraction construct like the Ada package and in the
4381        light of current thoughts on programming methodology, we feel that
4382        nesting is an anachronism.  In this paper we propose a nest-free
4383        program style for Ada that eschews nested program units and
4384        declarations within blocks and instead heavily utilizes packages
4385        and context specifications as mechanisms for controlling
4386        visibility.  We view this proposal as a first step toward the
4387        development of programming methods that exploit the novel language
4388        features available in Ada.  Consideration of this proposal's
4389        ramifications for data flow, control flow, and overall program
4390        structure substantiates our contention that a tree structure is
4391        seldom a natural representation of a program and that nesting
4392        therefore generally interferes with program development and
4393        readability.
4394    }
4395}
4396
4397@inproceedings{Buhr88,
4398    keywords    = {nested classes, persistence},
4399    contributer = {pabuhr@plg},
4400    author      = {P. A. Buhr and C. R. Zarnke},
4401    title       = {Nesting in an Object Oriented Language is NOT for the Birds},
4402    booktitle   = {Proceedings of the European Conference on Object Oriented Programming},
4403    publisher   = {Springer},
4404    volume      = 322,
4405    editor      = {S. Gjessing and K. Nygaard},
4406    address     = {Oslo, Norway},
4407    month       = aug,
4408    year        = 1988,
4409    pages       = {128-145},
4410    note        = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
4411}
4412
4413@inproceedings{Thompson90new,
4414    keywords    = {Plan 9},
4415    contributer = {pabuhr@plg},
4416    title       = {A New C Compiler},
4417    author      = {Ken Thompson},
4418    booktitle   = {Proceedings of the Summer 1990 UKUUG Conference},
4419    year        = 1990,
4420    pages       = {41--51},
4421    url         = {http://doc.cat-v.org/bell_labs/new_c_compilers/new_c_compiler.pdf}
4422}
4423
4424@article{Trono94,
4425    author      = {John A. Trono},
4426    title       = {A New Exercise in Concurrency},
4427    journal     = {SIGCSE Bulletin},
4428    volume      = {26},
4429    number      = {3},
4430    month       = sep,
4431    year        = {1994},
4432    pages       = {8-10},
4433    publisher   = {ACM},
4434    address     = {New York, NY, USA},
4435}
4436
4437@article{Lamport74,
4438    keywords    = {concurrency, N-Process solution, O(N)},
4439    contributer = {pabuhr@plg},
4440    author      = {Leslie Lamport},
4441    title       = {A New Solution of Dijkstra's Concurrent Programming Problem},
4442    journal     = cacm,
4443    month       = aug,
4444    year        = 1974,
4445    volume      = 17,
4446    number      = 8,
4447    pages       = {453-455},
4448}
4449
4450@article{landin,
4451    keywords    = {},
4452    contributer = {gjditchfield@plg},
4453    author      = {P. J. Landin},
4454    title       = {The Next 700 Programing Languages},
4455    journal     = cacm,
4456    year        = 1966,
4457    volume      = 9,
4458    pages       = {157-164},
4459}
4460
4461@article{Herlihy05,
4462    keywords    = {Multiprocessors, concurrent data structures, dynamic data structures, memory management, nonblocking synchronization},
4463    contributer = {pabuhr@plg},
4464    author      = {Maurice Herlihy and Victor Luchangco and Paul Martin and Mark Moir},
4465    title       = {Nonblocking Memory Management Support for Dynamic-sized Data Structures},
4466    journal     = tocs,
4467    volume      = 23,
4468    number      = 2,
4469    month       = may,
4470    year        = 2005,
4471    pages       = {146-196},
4472    numpages    = {51},
4473    publisher   = {ACM},
4474    address     = {New York, NY, USA},
4475}
4476
4477% O
4478
4479@inproceedings{oop:abcl/1,
4480    keywords    = {concurrency, OOPL, futures},
4481    contributer = {gjditchfield@plg},
4482    author      = {Akinori Yonezawa and Jean-Pierre Briot and Etsuya Shibayama},
4483    title       = {Object-Oriented Concurrent Programming in {ABCL/1}},
4484    crossref    = "OOPSLA86",
4485    pages       = {258-268},
4486    comment     = {
4487        Actions for messages sent to an object are executed concurrently
4488        iff the object has no members.  A select construct specifies a set
4489        of message patterns.
4490
4491        Express messages have priority.  If an express message arrives
4492        while an ordinary message is being processed, the action for the
4493        ordinary message is suspended or aborted and the action for the
4494        express message is executed.  The sender decides which class a
4495        message belongs in.  Non-interruptible sections can be defined.
4496
4497        Message sends can be non-blocking, or can block until a reply is
4498        received, at the sender's option.  The receiver can continue to
4499        execute after sending the reply.
4500
4501        Replies can send back ``futures'', and put values in them later.
4502        Futures are queues of values, not single values.  The caller can
4503        use a ``ready?'' predicate to test for empty queue, or can use
4504        operations to get the first or all queue elements; these operations
4505        block if the queue is empty.
4506    }
4507}
4508
4509@techreport{Schmidt95,
4510    keywords    = {ACE, concurrency, library},
4511    contributer = {pabuhr@plg},
4512    author      = {Douglas C. Schmidt},
4513    title       = {An OO Encapsulation of Lightweight OS Concurrency Mechanisms in the {ACE} Toolkit},
4514    institution = {Washington University in St. Louis},
4515    year        = 1995,
4516    number      = 31,
4517    note        = {{\small\textsf{http://\-www.cs.wustl.edu/\-\char`\~schmidt/\-PDF/\-IPC\_SAP-92.pdf}}},
4518}
4519
4520@inproceedings{OOEx,
4521    keywords    = {Exceptions, object-oriented programming languages},
4522    contributer = {gjditchfield@plg},
4523    author      = {Christophe Dony},
4524    title       = {An Object-oriented Exception Handling System for an Object-oriented Language},
4525    booktitle   = {ECOOP '88. European Conference on Object-Oriented Programming},
4526    year        = 1988,
4527    pages       = {146-161},
4528    editor      = {S. Gjessing and K. Nygaard},
4529    organization= {DND, The Norwegian Computer Society},
4530    publisher   = {Springer},
4531    comment     = {
4532           Objectives:
4533           - Users can define new exceptions.
4534           - Default handlers can be attached to exceptions.
4535           - Handlers can be attached to classes.
4536           - Handlers can be attached to dynamic entities (expressions).
4537           - Exceptions propagate first along the invocation chain.
4538           - Exceptions should be hierarchically organized classes.
4539           - Handlers should take into account the exception hierarchy (i.e.,
4540             should handle raising of sub-exceptions).
4541           The ``exceptional-event'' class has two subclasses.  ``Warning''
4542           has a ``resume'' method, and ``error'' has ``exit'' and
4543           ``retry'' methods.  Signalling an exception creates an instance
4544           of the exception, whose members are used to pass information
4545           back to the handler.  Handlers are instances of class
4546           ``protect-handler'' with a method ``protect {\em expression}'',
4547           or are methods defined for the class or the exception.
4548    }
4549}
4550
4551@article{CommonObjects,
4552    author      = {A. Snyder},
4553    title       = {Object-Oriented Programming for Common Lisp},
4554    address     = {Palo Alto CA},
4555    year        = 1985,
4556    publisher   = {Software Technology Laboratory, Hewlett-Packard Laboratories},
4557    journal     = {Report ATC-85-1},
4558}
4559
4560@book{objective-c,
4561    keywords    = {},
4562    author      = {Brad J. Cox},
4563    title       = {Object-oriented programming; an evolutionary approach},
4564    publisher   = {Addison-Wesley},
4565    address     = {Boston},
4566    year        = 1986
4567}
4568
4569@manual{obj-c-book,
4570    keywords    = {objective-c},
4571    contributor = {a3moss@uwaterloo.ca},
4572    author      = {{Objective-C}},
4573    title       = {The {Objective-C} Programming Language},
4574    organization= {Apple Computer Inc.},
4575    address     = {Cupertino, CA},
4576    year        = 2003
4577}
4578
4579@online{xcode7,
4580    keywords    = {objective-c},
4581    contributor = {a3moss@uwaterloo.ca},
4582    author      = {{Xcode}},
4583    title       = {{Xcode} 7 Release Notes},
4584    year        = 2015,
4585    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}},
4586    urldate     = {2017-04-04}
4587}
4588
4589@book{Beta,
4590    keywords    = {Beta, object oriented, concurrency, exceptions},
4591    contributer = {pabuhr@plg},
4592    author      = {Ole Lehrmann Madsen and Birger M{\o}ller-Pedersen and Kristen Nygaard},
4593    title       = {Object-oriented Programming in the {BETA} Programming Language},
4594    publisher   = {Addison-Wesley},
4595    address     = {Boston},
4596    year        = 1993,
4597}
4598
4599@article{Flavors,
4600    author      = {D. A. Moon},
4601    title       = {Object-Oriented Programming with Flavors},
4602    address     = {Portland OR},
4603    month       = sep,
4604    year        = 1986,
4605    journal     = {Proc. ACM Conf. on Object-Oriented Systems, Languages and Applications},
4606}
4607
4608@article{Buhr00b,
4609    keywords    = {concurrency, C++, real-time},
4610    contributer = {pabuhr@plg},
4611    author      = {Peter A. Buhr and Ashif S. Harji and Philipp E. Lim and Jiongxiong Chen},
4612    title       = {Object-Oriented Real-Time Concurrency},
4613    journal     = sigplan,
4614    volume      = 35,
4615    number      = 10,
4616    month       = oct,
4617    year        = 2000,
4618    pages       = {29-46},
4619    note        = {OOPSLA'00, Oct. 15--19, 2000, Minneapolis, Minnesota, U.S.A.},
4620}
4621
4622@book{Meyer88,
4623    keywords    = {Eiffel},
4624    contributer = {pabuhr@plg},
4625    author      = {Bertrand Meyer},
4626    title       = {Object-oriented Software Construction},
4627    publisher   = {Prentice-Hall},
4628    address     = {Englewood Cliffs},
4629    year        = {1988},
4630    series      = {Prentice-Hall International Series in Computer Science},
4631}
4632
4633@article{objectPascal,
4634    keywords    = {objects, modules},
4635    contributer = {gjditchfield@plg},
4636    author      = {Larry Tesler},
4637    title       = {Object Pascal Report},
4638    journal     = {Structured Language World},
4639    year        = 1985,
4640    volume      = 9,
4641    number      = 3,
4642}
4643
4644@misc{obj-c:next,
4645    keywords    = {categories, protocols, Objective C},
4646    contributor = {gjditchfield@angus},
4647    author      = {NeXT Computer, Inc.},
4648    title       = {Objective C Extensions},
4649    howpublished= {On-line documentation in ``NEXTSTEP 3.1 Developer''},
4650    year        = 1993
4651}
4652
4653@book{Galletly96,
4654    keywords    = {occam},
4655    author      = {John Galletly},
4656    title       = {{OCCAM} 2: Including {OCCAM} 2.1},
4657    publisher   = {{UCL} (University College London) Press},
4658    address     = {London},
4659    edition     = {2nd},
4660    year        = 1996,
4661}
4662
4663@techreport{Morrison88,
4664    keywords    = {objects, concurrency, persistence},
4665    contributer = {pabuhr@plg},
4666    author      = {R. Morrison and A. L. Brown and R. Carrick and R. Connor and A. Dearle},
4667    title       = {On the integration of Object-Oriented and Process-Oriented computation in persistent environments},
4668    institution = {Department of Computational Science, University of St. Andrews, Scotland},
4669    number      = {PPRR 57},
4670    month       = jan,
4671    year        = 1988,
4672}
4673
4674@article{Peterson73,
4675    keywords    = {goto, structured programming},
4676    contributer = {pabuhr@plg},
4677    author      = {W. W. Peterson and T. Kasami and N. Tokura},
4678    title       = {On the Capabilities of While, Repeat, and Exit Statements},
4679    journal     = cacm,
4680    month       = aug,
4681    year        = 1973,
4682    volume      = 16,
4683    number      = 8,
4684    pages       = {503-512}
4685}
4686
4687@article{Baker82,
4688    keywords    = {compilation},
4689    contributer = {gjditchfield@plg},
4690    author      = {Theodore P. Baker},
4691    title       = {A One-Pass Algorithm for Overload Resolution in {Ada}},
4692    journal     = toplas,
4693    year        = 1982,
4694    month       = oct,
4695    volume      = 4,
4696    number      = 4,
4697    pages       = {601-614},
4698    abstract    = {
4699        A simple method is presented for detecting ambiguities and finding
4700        the correct interpretations of expressions in the programming
4701        language Ada.  Unlike previously reported solutions to this
4702        problem, which require multiple passes over a tree structure, the
4703        method described here operates in one bottom-up pass, during which
4704        a directed acyclic graph is produced.  The correctness of this
4705        approach is demonstrated by a brief formal argument.
4706    },
4707    comment     = {
4708        See also \cite{D:overload}.
4709        }
4710}
4711
4712@techreport{OpenMP,
4713    keywords    = {concurrency, openmp, spmd},
4714    contributer = {pabuhr@plg},
4715    author      = {OpenMP Architecture Review Board},
4716    title       = {OpenMP Application Program Interface, Version 4.0},
4717    month       = jul,
4718    year        = 2013,
4719    note        = {\href{http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf}{\textsf{http://\-www.openmp.org/\-mp-documents/\-OpenMP4.0.0.pdf}}},
4720}
4721
4722@book{Deitel04,
4723    keywords    = {concurrency, operating systems},
4724    contributer = {pabuhr@plg},
4725    author      = {Harvey M. Deitel and Paul J. Deitel and David R. Choffnes},
4726    title       = {Operating Systems},
4727    publisher   = {Pearson Prentice-Hall},
4728    address     = {Englewood Cliffs},
4729    year        = 2004,
4730    edition     = {3rd},
4731}
4732
4733@book{Stalling98,
4734    keywords    = {concurrency, operating systems},
4735    contributer = {pabuhr@plg},
4736    author      = {William Stallings},
4737    title       = {Operating Systems: Internals and Design Principles},
4738    publisher   = {Prentice-Hall},
4739    address     = {Englewood Cliffs},
4740    year        = 1998,
4741    edition     = {3rd},
4742}
4743
4744@book{Stalling01,
4745    keywords    = {concurrency, operating systems},
4746    contributer = {pabuhr@plg},
4747    author      = {William Stallings},
4748    title       = {Operating Systems: Internals and Design Principles},
4749    publisher   = {Prentice-Hall},
4750    address     = {Englewood Cliffs},
4751    year        = 2001,
4752    edition     = {4th},
4753}
4754
4755@book{Silberschatz91,
4756    keywords    = {concurrency, operating systems},
4757    contributer = {pabuhr@plg},
4758    author      = {Abraham Silberschatz and James L. Peterson and Peter Galvin},
4759    title       = {Operating System Concepts},
4760    publisher   = {Addision-Wesley},
4761    address     = {Boston},
4762    year        = 1991,
4763    edition     = {3rd},
4764}
4765
4766@book{Tanenbaum87,
4767    keywords    = {concurrency, operating systems},
4768    contributer = {pabuhr@plg},
4769    author      = {Andrew S. Tanenbaum},
4770    title       = {Operating Systems : Design and Implementation},
4771    publisher   = {Prentice-Hall},
4772    address     = {Englewood Cliffs},
4773    series      = {Software Series},
4774    year        = 1987,
4775}
4776
4777@book{Hansen73,
4778    keywords    = {monitors},
4779    contributer = {pabuhr@plg},
4780    author      = {Per {Brinch Hansen}},
4781    title       = {Operating System Principles},
4782    publisher   = {Prentice-Hall},
4783    address     = {Englewood Cliffs},
4784    year        = 1973,
4785}
4786
4787@book{Bic03,
4788    keywords    = {concurrency, operating systems},
4789    contributer = {pabuhr@plg},
4790    author      = {Lubomir F. Bic and Alan C. Shaw},
4791    title       = {Operating System Principles},
4792    publisher   = {Prentice-Hall},
4793    address     = {Englewood Cliffs},
4794    year        = 2003,
4795}
4796
4797@techreport{milner88,
4798    keywords    = {},
4799    contributer = {gjditchfield@plg},
4800    author      = {Robin Milner},
4801    title       = {Operational and Algebraic Semantics of Concurrent Processes},
4802    institution = {Laboratory for Foundations of Computer Science},
4803    year        = 1988,
4804    address     = {Department of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ},
4805    month       = feb,
4806    number      = {ECS-LFCS-88-46}
4807}
4808
4809@article{Ganzinger80,
4810    contributer = {a3moss@uwaterloo.ca},
4811    author      = {Ganzinger, Harald and Ripken, Knut},
4812    title       = {Operator Identification in {ADA}: Formal Specification, Complexity, and Concrete Implementation},
4813    journal     = {SIGPLAN Notices},
4814    issue_date  = {February 1980},
4815    volume      = {15},
4816    number      = {2},
4817    month       = feb,
4818    year        = {1980},
4819    issn        = {0362-1340},
4820    pages       = {30--42},
4821    numpages    = {13},
4822    url         = {http://doi.acm.org/10.1145/947586.947589},
4823    doi         = {10.1145/947586.947589},
4824    publisher   = {ACM},
4825    address     = {New York, NY, USA}
4826}
4827
4828@article{Ford82,
4829    keywords    = {},
4830    contributer = {pabuhr@plg},
4831    author      = {G. Ford and B. Hansche},
4832    title       = {Optional, Repeatable, and Varying Type Parameters},
4833    journal     = sigplan,
4834    volume      = 17,
4835    number      = 2,
4836    month       = feb,
4837    year        = 1982,
4838    pages       = {41-48},
4839}
4840
4841@manual{pli,
4842    keywords    = {PL/I},
4843    contributer = {gjditchfield@plg},
4844    key         = {IBM},
4845    title       = {{OS} and {DOS} {PL/I} Reference Manual},
4846    organization= {International Business Machines},
4847    edition     = {1st},
4848    month       = sep,
4849    year        = 1981,
4850    note        = {Manual GC26-3977-0},
4851}
4852
4853@techreport{D:overload,
4854    keywords    = {overload resolution, compilation},
4855    contributer = {gjditchfield@plg},
4856    author      = {M. Dausmann et. al.},
4857    title       = {Overloading in {Ada}},
4858    institution = {Universitat Karlsruhe},
4859    year        = 1979,
4860    number      = {23/79},
4861    comment     = {
4862        Probably the earliest description of the two-pass (bottom-up,
4863        top-down) overload resolution algorithm. See also
4864        \cite{PW:overload,WS:overload,PDM:overload,Cor:overload,Bak:overload}.
4865    }
4866}
4867
4868@article{EB87,
4869    keywords    = {packages, private types, assignment, equality},
4870    contributer = {gjditchfield@plg},
4871    author      = {J. Dana Eckart and Richard J. LeBlanc},
4872    title       = {Overloading in the {Ada} Language: Is it too restrictive?},
4873    journal     = {Computer Languages},
4874    year        = 1987,
4875    volume      = 12,
4876    number      = {3/4},
4877    pages       = {163-172},
4878    abstract    = {
4879        Packages in the Ada language provide a mechanism for extending the
4880        language through the development of additional data types.  Such
4881        types can be better integrated into the language using operator
4882        overloading; however, key limitations prevent new types from being
4883        transparently integrated into the language.  Allowing function
4884        names to overload private type names would give a cleaner and
4885        clearer mechanism for building values of these types.  Furthermore,
4886        by allowing redefinitions of ``:='' and by making it easier to
4887        overload ``='' for private types, Ada coud be transformed into a
4888        more expressive language.
4889    }
4890}
4891
4892@article{PW:overload,
4893    keywords    = {compilation},
4894    contributer = {gjditchfield@plg},
4895    author      = {Guido Persch and Georg Winterstein and Manfred Dausman and Sophia Drossopoulou},
4896    title       = {Overloading in Preliminary {Ada}},
4897    journal     = sigplan,
4898    year        = 1980,
4899    month       = nov, volume = 15, number = 11, pages = {47-56},
4900    note        = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada} Programming Language}, 
4901    comment     = {
4902        The two-pass (bottom-up, then top-down) algorithm, with a proof
4903        that two passes suffice.  See also \cite{D:overload}.
4904    }
4905}
4906
4907@article{SR,
4908    keywords    = {concurrency, messages, rendezvous},
4909    contributer = {pabuhr@plg},
4910    author      = {Gregory R. Andrews and Ronald A. Olsson and Michael Coffin and
4911                  Irving Elshoff and Kelvin Nilsen and Titus Purdin and Gregg Townsend},
4912    title       = {An Overview of the {SR} Language and Implementation},
4913    journal     = toplas,
4914    month       = jan,
4915    year        = 1988,
4916    volume      = 10,
4917    number      = 1,
4918    pages       = {51-86},
4919}
4920
4921% P
4922
4923@article{Andrews91,
4924    keywords    = {general concurrency},
4925    contributer = {pabuhr@plg},
4926    author      = {Gregory R. Andrews},
4927    title       = {Paradigms for Process Interaction in Distributed Programs},
4928    journal     = acmcs,
4929    volume      = 23,
4930    number      = 1,
4931    month       = mar,
4932    year        = 1991,
4933    pages       = {49-90},
4934}
4935
4936@book{PPC++,
4937    keywords    = {concurrency, parallel, distributed, C++},
4938    contributer = {pabuhr@plg},
4939    editor      = {Gregory V. Wilson and Paul Lu},
4940    title       = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4941    publisher   = {MIT Press},
4942    series      = {Scientific and Engineering Computation Series},
4943    year        = 1996,
4944    pages       = {1-42},
4945}
4946
4947@incollection{Stroustrup96,
4948    keywords    = {concurrency, C++},
4949    contributer = {pabuhr@plg},
4950    author      = {Bjarne Stroustrup},
4951    title       = {A Perspective on Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4952    editor      = {Gregory V. Wilson and Paul Lu},
4953    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4954    publisher   = {MIT Press},
4955    series      = {Scientific and Engineering Computation Series},
4956    year        = 1996,
4957    pages       = {xxvi-xxvii},
4958}
4959
4960@incollection{Yang96b,
4961    keywords    = {concurrency, C++},
4962    contributer = {pabuhr@plg},
4963    author      = {Shelby X. Yang and Dennis Gannon and Peter Beckman and Jacob Gotwals and Neelakantan Sundaresan},
4964    editor      = {Gregory V. Wilson and Paul Lu},
4965    title       = {p{C}++},
4966    booktitle   = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4967    publisher   = {MIT Press},
4968    address     = {Cambridge},
4969    series      = {Scientific and Engineering Computation Series},
4970    pages       = {507-546},
4971    year        = 1996,
4972}
4973
4974@article{goguen84,
4975    keywords    = {},
4976    contributer = {gjditchfield@plg},
4977    author      = {Goseph A. Goguen},
4978    title       = {Parameterized Programming},
4979    journal     = ieeese,
4980    year        = 1984,
4981    month       = sep, volume = "SE-10", number = 5, pages = {528-543},
4982    abstract    = {
4983        Parameterized programming is a powerful technique for the reliable
4984        reuse of software.  In this technique, modules are parameterized
4985        over very general interfaces that describe what properties of an
4986        environment are required for the module to work correctly.
4987        Reusability is enhanced by the flexibility of the parameterization
4988        mechanism proposed here.  Reliability is further enhanced by
4989        permitting interface requirements to include more than purely
4990        syntactic information.  This paper introduces three new ideas that
4991        seem especially useful in supporting parameterized programming: 1)
4992        {\em theories}, which declare global properties of program modules
4993        and interfaces; 2) {\em views}, which connect theories with program
4994        modules in an elegant way; and 3) {\em module expressions}, a kind
4995        of general structured program transformation which produces new
4996        modules by modifying and combining existing modules.  Although
4997        these ideas are illustrated with some simple examples in the OBJ
4998        programming language, they should also be taken as proposals for an
4999        Ada library system, for adding modules to Prolog, and as
5000        considerations for future language design efforts.  OBJ is an
5001        ultra-high level programming language, based upon rewrite rules,
5002        that incorporates these ideas, and many others from modern
5003        programming methodology.
5004    }
5005}
5006
5007@inproceedings{c++:templates,
5008    author      = {Bjarne Stroustrup},
5009    contributer = {gjditchfield@plg},
5010    title       = {Parameterized Types for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5011    booktitle   = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
5012    organization= {USENIX Association},
5013    year        = 1988, pages = {1-18}
5014}
5015
5016@inproceedings{Boehm85,
5017    keywords    = {second-order unification},
5018    contributer = {gjditchfield@plg},
5019    author      = {Hans-J. Boehm},
5020    title       = {Partial Polymorphic Type Inference is Undecidable},
5021    booktitle   = {26th Annual Symposium on Foundations of Computer Science},
5022    year        = 1985,
5023    pages       = {339-345},
5024    organization= {IEEE Computer Society},
5025    publisher   = {IEEE Computer Society Press},
5026    address     = {1730 Massachusetts Avenue, N.W, Washington, D.C. 20036-1903},
5027    summary     = {
5028        Given a base typed lambda calculus with function types, type
5029        abstractions, and a recursive expression \(\mbox{fix } x:t.e\),
5030        then type inference for the partially typed language
5031        \begin{eqnarray}
5032        \lambda x:\tau.e        &\Rightarrow& \lambda x.e       \\
5033        \mbox{fix } x:\tau.e    &\Rightarrow& \mbox{fix } x.e   \\
5034        e \tau                  &\Rightarrow& e ?
5035        \end{eqnarray}
5036        is undecidable.
5037    }
5038}
5039
5040@book{Pascal,
5041    keywords    = {Pascal},
5042    contributer = {pabuhr@plg},
5043    author      = {Kathleen Jensen and Niklaus Wirth},
5044    title       = {{P}ascal User Manual and Report},
5045    publisher   = {Springer--Verlag},
5046    year        = 1985,
5047    edition     = {3rd},
5048    note        = {Revised by Andrew B. Mickel and James F. Miner, ISO Pascal Standard}
5049}
5050
5051@book{Pascal:old,
5052    keywords    = {Pascal},
5053    contributer = {pabuhr@plg},
5054    author      = {Kathleen Jensen and Niklaus Wirth},
5055    title       = {{P}ascal User Manual and Report},
5056    publisher   = {Springer--Verlag},
5057    year        = 1975,
5058    edition     = {1st},
5059}
5060
5061@article{Turba85,
5062    keywords    = {Pascal, exception handling, inheritance},
5063    contributer = {pabuhr@plg},
5064    author      = {Thomas N. Turba},
5065    title       = {The {P}ascal Exception Handling Proposal},
5066    journal     = sigplan,
5067    volume      = 20,
5068    number      = 8,
5069    month       = aug,
5070    year        = 1985,
5071    pages       = {93-98},
5072}
5073
5074@manual{Pascal/VS,
5075    keywords    = {PL/I},
5076    contributer = {pabuhr@plg},
5077    key         = {IBM},
5078    title       = {{P}ascal/{VS} Language Reference Manual},
5079    organization= {International Business Machines},
5080    edition     = {1st},
5081    year        = 1981,
5082    note        = {Manual SH20-6168-1},
5083}
5084
5085@article{Anderson90,
5086    keywords    = {spin locks, back off, performance},
5087    contributer = {pabuhr@plg},
5088    author      = {Thomas E. Anderson},
5089    title       = {The Performance of Spin Lock Alternatives for Shared-Memory Multiprocessors},
5090    journal     = ieeepds,
5091    month       = jan,
5092    year        = 1990,
5093    volume      = 1,
5094    number      = 1,
5095    pages       = {6-16},
5096}
5097
5098@article{poly,
5099    keywords    = {Poly, Standard ML, Russell, persistence},
5100    contributer = {gjditchfield@plg},
5101    author      = {David C. J. Matthews},
5102    title       = {Poly Manual},
5103    journal     = sigplan,
5104    month       = sep, year = 1985,
5105    volume      = 20, number = 9, pages = {52-76}
5106}
5107
5108@techreport{Atkinson87b,
5109    keywords    = {naming, persistence},
5110    contributer = {pabuhr@plg},
5111    author      = {M. P. Atkinson and R. Morrison},
5112    title       = {Polymorphic Names and Iterations},
5113    institution = {Universities of Glasgow and St. Andrews, Scotland},
5114    number      = {PPRR-53-87},
5115    month       = nov,
5116    year        = 1987,
5117}
5118
5119@book{Harland,
5120    keywords    = {},
5121    author      = {David M. Harland},
5122    title       = {Polymorphic Programming Languages: Design and Implementation},
5123    publisher   = {Ellis Horwood},
5124    year        = 1984,
5125    series      = {Computers and their Applications},
5126    address     = {Market Cross House, Cooper Street, Chichester, West Sussex,
5127        PO19 1EB, England},
5128    summary     = {
5129        The principles of Procedural Abstraction, Data Type Completeness,
5130        Declaration Correspondence, and Orthogonality are ruthlessly applied
5131        to the design of a polymorphic language.
5132    }
5133}
5134
5135@unpublished{poa,
5136    keywords    = {Force N, type inference, reusability, transcendance},
5137    contributer = {gjditchfield@plg},
5138    author      = {G. V. Cormack and A. K. Wright},
5139    title       = {Polymorphism, Overloading, and Abstraction},
5140    note        = {personal communication}
5141}
5142
5143@inproceedings{forceone:impl,
5144    keywords    = {Parametric polymorphism, ForceOne},
5145    contributer = {gjditchfield@plg},
5146    author      = {G. V. Cormack and A. K. Wright},
5147    title       = {Polymorphism in the Compiled Language {ForceOne}},
5148    booktitle   = {Proceedings of the 20th Hawaii International Conference on Systems Sciences},
5149    month       = jan,
5150    year        = 1987,
5151    pages       = {284-292},
5152}
5153
5154@incollection{POOL-T,
5155    keywords    = {objects, concurrency},
5156    contributer = {pabuhr@plg},
5157    author      = {Pierre America},
5158    title       = {POOL-T: A Parallel Object-Oriented Language},
5159    booktitle   = {Object-Oriented Concurrent Programming},
5160    publisher   = {The MIT Press},
5161    year        = 1987,
5162    pages       = {199-220},
5163    editor      = {Akinori Yonezawa and Mario Tokoro}
5164}
5165
5166@article{Hardgrave76,
5167    keywords    = {positional, keyword, parameters, arguments},
5168    contributer = {pabuhr@plg},
5169    author      = {W. T. Hardgrave},
5170    title       = {Positional versus Keyword Parameter Communication in Programming Languages},
5171    journal     = sigplan,
5172    volume      = 11,
5173    number      = 5,
5174    month       = may,
5175    year        = 1976,
5176    pages       = {52-58},
5177}
5178
5179@book{PowerPC,
5180    key         = {PowerPC processor},
5181    title       = {Programming Environments Manual for 32-Bit Implementations of the PowerPC ArchitectureARM Architecture},
5182    publisher   = {Freescale Semiconductor},
5183    volume      = {MPCFPE32B},
5184    edition     = {Rev. 3},
5185    month       = 9,
5186    year        = 2005,
5187}
5188
5189@article{Ada:preliminary,
5190    keywords    = {Ada},
5191    contributer = {pabuhr@plg},
5192    author      = {Jean D. Ichbiah and Bernd Krieg-Brueckner and Brian A. Wichmann
5193                   and Henry F. Ledgard and Jean-Claude Heliard and Jean-Raymond Abrial
5194                   and John G. P. Barnes and Olivier Roubine},
5195    title       = {Preliminary {Ada} Reference Manual},
5196    journal     = sigplan,
5197    volume      = 14,
5198    number      = 6,
5199    month       = jun,
5200    year        = 1979,
5201    note        = {Part A},
5202}
5203
5204@techreport{Forsythe,
5205    author      = {John C. Reynolds},
5206    title       = {Preliminary Design of the Programming Language {Forsythe}},
5207    institution = {Carnegie Mellon University},
5208    number      = {CMU-CS-88-159},
5209    month       = jun,
5210    year        = 1988,
5211}
5212
5213@article{PRESTO,
5214    keywords    = {concurrency, threads},
5215    contributer = {dgharriss@plg},
5216    author      = {B. N. Bershad and E. D. Lazowska and H. M. Levy},
5217    title       = {{PRESTO}: A System for Object-oriented Parallel Programming},
5218    journal     = spe,
5219    volume      = 18,
5220    number      = 8,
5221    month       = aug,
5222    year        = 1988,
5223    pages       = {713-732}
5224}
5225
5226@book{Ben-Ari82,
5227    keywords    = {concurrency, parallel, programming languages},
5228    contributer = {pabuhr@plg},
5229    author      = {Mordechai Ben-Ari},
5230    title       = {Principles of Concurrent Programming},
5231    publisher   = {Prentice-Hall International},
5232    address     = {Englewood Cliffs},
5233    year        = 1982,
5234}
5235
5236@book{Tennent81,
5237    author      = {R. D. Tennent},
5238    title       = {Principles of Programming Languages},
5239    publisher   = {Prentice-Hall International},
5240    address     = {Englewood Cliffs},
5241    year        = 1981,
5242    series      = {Series in Computer Science}
5243}
5244
5245@article{Lister77,
5246    keywords    = {monitors, nested monitor calls},
5247    contributer = {pabuhr@plg},
5248    author      = {Andrew Lister},
5249    title       = {The Problem of Nested Monitor Calls},
5250    journal     = osr,
5251    volume      = 11,
5252    number      = 3,
5253    month       = jul,
5254    year        = 1977,
5255    pages       = {5-7},
5256}
5257
5258@article{psa:persistence,
5259    keywords    = {persistence, first-class procedures, closure, PS-Algol,
5260        Abstract Data Types},
5261    contributer = {gjditchfield@plg},
5262    author      = {Malcolm P. Atkinson and Ronald Morrison},
5263    title       = {Procedures as Persistent Data Objects},
5264    journal     = toplas,
5265    volume      = {7},    number = {4},
5266    pages       = {539-559},
5267    month       = oct, year = 1985,
5268    comment     = {
5269        PS-Algol has ``structures'', accessible only through ``pntrs''.
5270        Pntrs can refer to any type of structure.  Field references involve
5271        a run-time check.  This, plus first-class procedures, can simulate
5272        abstract data types.  Procedure variables operating on pntrs
5273        simulate ADT operations.  A block defines a structure to implement
5274        the ADT, and assigns procedures to the variables.  Functions
5275        returning structures containing procedures  simulate multiple
5276        implementations and parameterized ADTs.
5277
5278        An outer procedure that returns a procedure that contains
5279        (non-local) references to the outer procedure's parameters
5280        implements partial evaluation.
5281
5282        Modules can be simulated like ADT's.  The module itself is a
5283        structure instance that is placed in persistent storage, and the
5284        module is imported by fetching it from the persistent store.
5285        Multiple instances of modules are easy.  Installation of new
5286        versions can be done by replacing the version in the database.
5287    }
5288}
5289
5290@article{Procol89,
5291    keywords    = {active objects, object-oriented languages,
5292        object-based languages, explicit per-object protocol},
5293    contributer = {akgoel@plg},
5294    author      = {Jan van den Bos and Chris Laffra},
5295    title       = {PROCOL: A Parallel Object Language with Protocols},
5296    journal     = sigplan,
5297    volume      = 24,
5298    number      = 10,
5299    month       = oct,
5300    year        = 1989,
5301    pages       = {95-102},
5302    note        = {Proceedings of the OOPSLA'89 Conference, Oct. 1--6, 1989, New Orleans, Lousiana},
5303    abstract    = {},
5304}
5305
5306@book{Butenhof97,
5307    keywords    = {PThreads, concurrency},
5308    contributer = {pabuhr@plg},
5309    author      = {David R. Butenhof},
5310    title       = {Programming with {POSIX} Threads},
5311    publisher   = {Addison-Wesley},
5312    address     = {Boston},
5313    series      = {Professional Computing},
5314    year        = 1997,
5315}
5316
5317@book{SETL,
5318    keywords    = {SETL},
5319    contributer = {pabuhr@plg},
5320    author      = {J. T. Schwartz and R. B. K. Dewar and E. Dubinsky and E. Schonberg},
5321    title       = {Programming with Sets: An Introduction to {SETL}},
5322    publisher   = {Springer},
5323    address     = {New York, NY, USA},
5324    year        = 1986,
5325}
5326
5327@book{Genuys68,
5328    keywords    = {contains Dijkstra's Cooperating Sequential Processes},
5329    contributer = {pabuhr@plg},
5330    editor      = {F. Genuys},
5331    title       = {Programming Languages},
5332    publisher   = {Academic Press},
5333    address     = {London, New York},
5334    year        = 1968,
5335    note        = {NATO Advanced Study Institute, Villard-de-Lans, 1966}
5336}
5337
5338@manual{ANSI99:C,
5339    keywords    = {ANSI C 99},
5340    contributer = {pabuhr@plg},
5341    title       = {Programming Languages -- {C}},
5342    organization= {International Standard ISO/IEC 9899:1999 (E)},
5343    publisher   = {American National Standards Institute},
5344    address     = {www.ansi.org},
5345    year        = 1999,
5346}
5347
5348@manual{ANSI98:C++,
5349    keywords    = {ANSI C++ 98},
5350    contributer = {pabuhr@plg},
5351    key         = {C++98},
5352    title       = {Programming Languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5353    organization= {International Standard ISO/IEC 14882:1998 (E)},
5354    publisher   = {American National Standards Institute},
5355    address     = {www.ansi.org},
5356    year        = 1998,
5357}
5358
5359@manual{C++14,
5360    keywords    = {ISO/IEC C++ 14},
5361    contributer = {pabuhr@plg},
5362    author      = {C++14},
5363    title       = {Programming Languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} ISO/IEC 14882:2014},
5364    edition     = {4th},
5365    publisher   = {International Standard Organization},
5366    address     = {\href{https://www.iso.org/standard/64029.html}{https://\-www.iso.org/\-standard/\-64029.html}},
5367    year        = 2014,
5368}
5369
5370@manual{MS:VisualC++,
5371    keywords    = {Microsoft Visual C++},
5372    contributer = {pabuhr@plg},
5373    title       = {Microsoft Visual {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} .NET Language Reference},
5374    organization= {Microsoft Corporation},
5375    year        = 2002,
5376    note        = {Microsoft Press, Redmond, Washington, U.S.A.},
5377}
5378
5379@article{HasselBring00,
5380    keywords    = {concurrency, prototyping},
5381    contributer = {pabuhr@plg},
5382    author      = {Wilhelm Hasselbring},
5383    title       = {Programming Languages and Systems for Prototyping Concurrent Applications},
5384    journal     = acmcs,
5385    volume      = 32,
5386    number      = 1,
5387    month       = mar,
5388    year        = 2000,
5389    pages       = {43-79},
5390}
5391
5392@article{LLgen,
5393    keywords    = {ll(1), parser generator, separate compilation},
5394    contributer = {gjditchfield@plg},
5395    author      = {Dick Grune and Ceriel J. J. Jacobs},
5396    title       = {A Programmer-friendly LL(1) Parser Generator},
5397    journal     = spe,
5398    month       = jan, year = 1988,
5399    volume      = 18, number = 1, pages = {29-33},
5400    comment     = {
5401        LLgen generates C-language recursive-descent parsers.  The input
5402        contains procedure-like rules with alternation and repetition
5403        constructs on the right, and (typed) parameters on the left.
5404        C actions are specified between items in the right side.
5405        Alternation and repetition (reduce and shift) conflicts can be
5406        resolved statically or at run time.
5407
5408        A grammar can be specified in several files.  All files must be
5409        submitted to LLgen at once, but if the C file generated is no
5410        different from the old version, then the old version is not
5411        replaced and hence need not be recompiled, which saves lots of
5412        time.
5413
5414        When an incorrect token is found, the automatic error recovery
5415        algorithm discards tokens until an ``acceptable'' token is found;
5416        if the acceptable token is not correct, a correct one is inserted.
5417    }
5418}
5419
5420@techreport{russell,
5421    keywords    = {Russell},
5422    contributer = {gjditchfield@plg},
5423    author      = {H. Boehm and A. Demers and J. Donahue},
5424    title       = {A Programmer's Introduction to Russell},
5425    institution = {Rice University},
5426    year        = 1985,
5427    number      = {85-16}
5428}
5429
5430@techreport{PDM89,
5431    keywords    = {existential types, universal types},
5432    contributer = {gjditchfield@plg},
5433    author      = {Benjamin Pierce and Scott Dietzen and Spiro Michaylov},
5434    title       = {Programming in Higher-Order Typed Lambda Calculi},
5435    institution = {School of Computer Science, Carnegie Mellon University},
5436    year        = 1989,
5437    address     = {Pittsburg, PA 15213-3890},
5438    month       = mar, number = {CMU-CS-89-111},
5439    abstract    = {
5440        This tutorial presents a hierarchy of increasingly powerful
5441        languages, beginning with Church's simply typed
5442        \(\lambda\)-calculus (\(F_1\)) and the second-order polymorphic
5443        \(\lambda\)-calculus of Girard and Reynolds, and culminating in a
5444        fragment of Girard's \(\omega\)-order polymorphic
5445        \(\lambda\)-calculus (\(F_\omega\)).  Our focus throughout is on
5446        the unusual style of programming that arises in these languages,
5447        where all functions are total and the primary control construct is
5448        iteration rather than general recursion.
5449    }
5450}
5451
5452@book{Modula-2,
5453    keywords    = {modules, coroutines},
5454    contributer = {pabuhr},
5455    author      = {Niklaus Wirth},
5456    title       = {Programming in Modula-2},
5457    publisher   = {Springer},
5458    address     = {New York},
5459    year        = 1988,
5460    edition     = {4th},
5461    series      = {Texts and Monographs in Computer Science},
5462}
5463
5464@manual{Ada,
5465    keywords    = {Ada, packages, tasks, exceptions},
5466    contributer = {pabuhr@plg},
5467    title       = {The Programming Language {Ada}: Reference Manual},
5468    author      = {Ada},
5469    organization= {United States Department of Defense},
5470    edition     = {{ANSI/MIL-STD-1815A-1983}},
5471    month       = feb,
5472    year        = 1983,
5473    note        = {Springer, New York},
5474}
5475
5476@manual{ada:old,
5477    keywords    = {Ada, packages, tasks, exceptions},
5478    contributer = {gjditchfield@plg},
5479    title       = {The Programming Language {Ada}: Reference Manual},
5480    organization= {United States Department of Defense},
5481    publisher   = {Springer},
5482    year        = 1981
5483}
5484
5485@book{Ghezzi,
5486    keywords    = {},
5487    author      = {Carlo Ghezzi and Mehdi Jazayeri},
5488    title       = {Programming Language Concepts},
5489    publisher   = {Wiley},
5490    year        = 1982
5491}
5492
5493@article{ConcurrentPascal,
5494    keywords    = {Concurrent Pascal},
5495    contributer = {pabuhr@plg},
5496    author      = {Per {Brinch Hansen}},
5497    title       = {The Programming Language Concurrent Pascal},
5498    journal     = ieeese,
5499    volume      = 2,
5500    month       = jun,
5501    year        = 1975,
5502    pages       = {199-206}
5503}
5504
5505@phdthesis{Buhr85:thesis,
5506    keywords    = {},
5507    contributer = {pabuhr@plg},
5508    author      = {P. A. Buhr},
5509    title       = {A Programming System},
5510    school      = {University of Manitoba},
5511    year        = {1985}
5512}
5513
5514@techreport{pierce91,
5515    keywords    = {typed lambda calculus},
5516    contributer = {gjditchfield@plg},
5517    author      = {Benjamin C. Pierce},
5518    title       = {Programming with Intersection Types, Union Types, and Polymorphism},
5519    institution = {Carnegie Mellon University},
5520    year        = 1991,
5521    month       = feb, number = "CMU-CS-91-106",
5522    annote      = {
5523        Discusses a typed lambda calculus with
5524        \begin{itemize}
5525        \item
5526        Intersection types \(\tau = \tau_1\wedge\tau_2\) with \(\tau \le
5527        \tau_i\) for all \(i\).
5528        \item
5529        Union types \(\tau = \tau_1\vee\tau_2\) with \(\tau_i \le \tau\),
5530        and with implicit coercions from \(tau_i\) to \(\tau\).  Only
5531        operations valid for both element types can be applied to the
5532        union; there are no projections.  Union types are to variant
5533        records as set union is to disjoint set union.
5534        \item
5535        Function types and universal quantification, with subtyping rules.
5536        When functions and arguments intersections, the result of
5537        application is the intersection of all valid combinations.
5538        \item
5539        Distribution rules for combinations of types.
5540        \item
5541        "Union elimination": "case \(x = e\) of \(e'\)", where \(e\) is a
5542        union, has type \(\tau\) if \(e'\) has that type with \(x\) having
5543        every element type of the union.
5544        \item
5545        "Finitary quantification": "for \(t\) in \(\tau_1,\ldots,\tau_n.e\)"
5546        typechecks \(e\) with \(t\) bound to each choice, and intersects
5547        the results.
5548        \end{itemize}
5549
5550        Examples include: type of "natural" numbers, treated as a union of
5551        "zero" and "positive" types; default parameters, faked by using an
5552        argument that is an intersection of a data type and a function
5553        taking an explicit argument.
5554
5555        Unions can be mostly faked, according to Mitchell:
5556        \[\tau_1\vee\tau_2 \equiv
5557             \forall\tau.(\tau_1\on\tau)\wedge(\tau_2\on\tau)\]
5558    }
5559}
5560
5561@article{promises,
5562    keywords    = {futures, Argus, call streams, rpc},
5563    contributer = {gjditchfield@plg},
5564    author      = {Barbara Liskov and Liuba Shrira},
5565    title       = {Promises: Linguistic Support for Efficient Asynchronous
5566          Procedure Calls in Distributed Systems},
5567    journal     = sigplan,
5568    year        = 1988,
5569    month       = jul, volume = 23, number = 7, pages = {260-267},
5570    note        = {Proceedings of the SIGPLAN '88 Conference on Programming Language
5571         Design and Implementation},
5572    abstract    = {
5573        This paper deals with the integration of an efficient asynchronous
5574        remote procedure call mechanism into a programming language.  It
5575        describes a new data type called a {\em promise} that was designed
5576        to support asynchronous calls.  Promises allow a caller to run in
5577        parallel with a call and to pick up the results of the call,
5578        including any exceptions it raises, in a convenient and type-safe
5579        manner.  The paper also discusses efficient composition of
5580        sequences of asynchronous calls to different locations in a
5581        network.
5582    }
5583}
5584
5585@article{Cook89,
5586    keywords    = {},
5587    contributer = {gjditchfield@plg},
5588    author      = {W. R. Cook},
5589    title       = {A Proposal for Making {Eiffel} Type-safe},
5590    journal     = {The Computer Journal},
5591    year        = 1989,
5592    volume      = 32, number = 4, pages = {305-311},
5593    abstract    = {
5594       
5595    }
5596}
5597
5598@inproceedings{Foxall79,
5599    keywords    = {},
5600    contributer = {pabuhr@plg},
5601    author      = {D. G. Foxall and M. L. Joliat and R. F. Kamel and J. J. Miceli},
5602    title       = {{PROTEL}: A High Level Language for Telephony},
5603    booktitle   = {Proceedings 3rd International Computer Software and Applications Conference},
5604    month       = nov,
5605    year        = 1979,
5606    pages       = {193-197},
5607}
5608
5609@techreport{PS-Algol,
5610    keywords    = {algol, persistence},
5611    contributer = {pabuhr@plg},
5612    key         = {PS-Algol},
5613    title       = {The {PS-Algol} Reference Manual, 4th Ed.},
5614    author      = {},
5615    institution = {University of Glasgow and St. Andrews, Scotland},
5616    number      = {PPRR 12},
5617    month       = jun,
5618    year        = 1987,
5619}
5620
5621@manual{Python,
5622    keywords    = {Python},
5623    contributer = {pabuhr},
5624    title       = {Python Reference Manual, Release 2.5},
5625    author      = {Guido van Rossum},
5626    organization= {Python Software Foundation},
5627    month       = sep,
5628    year        = 2006,
5629    note        = {Fred L. Drake, Jr., editor},
5630}
5631
5632% Q
5633
5634@article{Grossman06,
5635    keywords    = {Cyclone, existential types, polymorphism, type variables},
5636    contributer = {a3moss@plg},
5637    author      = {Dan Grossman},
5638    title       = {Quantified Types in an Imperative Language},
5639    journal     = toplas,
5640    issue_date  = {May 2006},
5641    volume      = {28},
5642    number      = {3},
5643    month       = may,
5644    year        = 2006,
5645    issn        = {0164-0925},
5646    pages       = {429-475},
5647    url         = {http://doi.acm.org.proxy.lib.uwaterloo.ca/10.1145/1133651.1133653},
5648    doi         = {10.1145/1133651.1133653},
5649    acmid       = {1133653},
5650    publisher   = {ACM},
5651    address     = {New York, NY, USA},
5652}
5653
5654@article{Hoare61,
5655    keywords    = {quick sort},
5656    contributer = {pabuhr@plg},
5657    author      = {C. A. R. Hoare},
5658    title       = {Algorithms 63/64: Partition/Quicksort},
5659    journal     = cacm,
5660    volume      = 4,
5661    number      = 7,
5662    month       = jul,
5663    year        = 1961,
5664    pages       = {321},
5665}
5666
5667% R
5668
5669@article{Ada:rationale:preliminary,
5670    keywords    = {Ada},
5671    contributer = {pabuhr@plg},
5672    author      = {J. D. Ichbiah and J. C. Heliard and O. Roubine and
5673                   J. G. P. Barnes and B. Krieg-Brueckner and B. A. Wichmann},
5674    title       = {Rationale for the Design of the {ADA} Programming Language},
5675    journal     = sigplan,
5676    volume      = 14,
5677    number      = 6,
5678    month       = jun,
5679    year        = 1979,
5680    note        = {Part B},
5681}
5682
5683@book{Ada:rationale,
5684    keywords    = {Ada},
5685    contributer = {pabuhr@plg},
5686    author      = {Jean D. Ichbiah and John G. P. Barnes and Robert J. Firth and Mike Woodger},
5687    title       = {Rationale for the Design of the {ADA} Programming Language},
5688    publisher   = {Under Secretary of Defense, Research and Engineering},
5689    year        = 1986,
5690    address     = {Ada Joint Program Office, OUSDRE(R\&AT), The Pentagon, Washington, D. C., 20301, U.S.A.},
5691}
5692
5693@manual{Ada95,
5694    keywords    = {Ada},
5695    contributer = {pabuhr@plg},
5696    title       = {{A}da Reference Manual},
5697    edition     = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
5698    organization= {Intermetrics, Inc.},
5699    month       = dec,
5700    year        = 1995,
5701    note        = {Language and Standards Libraries}
5702}
5703
5704@manual{Ada12,
5705    keywords    = {ISO/IEC Ada},
5706    contributer = {pabuhr@plg},
5707    author      = {Ada12},
5708    title       = {Programming languages -- {Ada} ISO/IEC 8652:2012},
5709    edition     = {3rd},
5710    publisher   = {International Standard Organization},
5711    address     = {\href{https://www.iso.org/standard/61507.html}{https://\-www.iso.org/\-standard/\-61507.html}},
5712    year        = 2012,
5713}
5714
5715@manual{Ada95:annotated,
5716    keywords    = {Ada},
5717    contributer = {pabuhr@plg},
5718    title       = {Annotated {A}da Reference Manual},
5719    edition     = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
5720    organization = {Intermetrics, Inc.},
5721    month       = dec,
5722    year        = 1995,
5723    note        = {Language and Standards Libraries}
5724}
5725
5726@book{JavaRT00,
5727    keywords    = {real time, draft},
5728    contributer = {pabuhr@plg},
5729    author      = {Greg Bollella and Ben Brosgol and Peter Dibble and Steve Furr and James Gosling and David Hardin and Mark Turnbull},
5730    title       = {The Real-Time Specification for {J}ava},
5731    series      = {The Real-Time for Java Expert Group, {\small\textsf{http://\-www.rtj.org}}},
5732    publisher   = {Addison-Wesley},
5733    address     = {Boston},
5734    year        = 2000,
5735}
5736
5737@manual{JavaRT99,
5738    organization= {Real Time for Java Experts Group},
5739    address     = {{\small\textsf{http://\-www.rtj.org}}},
5740    month       = sep,
5741    year        = 1999,
5742}
5743
5744@article{Robinson48,
5745    keywords    = {recursion, Ackermann function},
5746    contributer = {pabuhr@plg},
5747    author      = {Raphael Mitchel Robinson},
5748    title       = {Recursion and Double Recursion},
5749    publisher   = {American Mathematical Society},
5750    journal     = {Bulletin of the American Mathematical Society},
5751    volume      = 54,
5752    pages       = {987-993},
5753    year        = 1948,
5754}
5755
5756@article{Dijkstra:red,
5757    keywords    = {ada},
5758    contributer = {gjditchfield@plg},
5759    author      = {Edsger W. Dijkstra},
5760    title       = {On the RED Language submitted to the DoD},
5761    journal     = sigplan,
5762    year        = 1978,
5763    month       = oct,
5764    volume      = 13,
5765    number      = 10,
5766    pages       = {27-32},
5767}
5768
5769@article{RemoteRendezvous,
5770    keywords    = {rendezvous, concurrency},
5771    contributer = {pabuhr@plg},
5772    author      = {N. D. Gammage and R. F. Kamel and L. M. Casey},
5773    title       = {Remote Rendezvous},
5774    journal     = spe,
5775    month       = oct,
5776    year        = 1987,
5777    volume      = 17,
5778    number      = 10,
5779    pages       = {741-755}
5780}
5781
5782@article{Euclid,
5783    keywords    = {Euclid},
5784    contributer = {pabuhr@plg},
5785    author      = {B. W. Lampson and J. J. Horning and R. L. London and J. G. Mitchell and G. L. Popek},
5786    title       = {Report on the Programming Language Euclid},
5787    journal     = sigplan,
5788    volume      = 12,
5789    number      = 2,
5790    month       = feb,
5791    year        = 1977,
5792    pages       = {1-79}
5793}
5794
5795@techreport{LOGLAN88,
5796    keywords    = {LOGLAN},
5797    contributer = {pabuhr@plg},
5798    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},
5799    title       = {Report on the Programming Language LOGLAN'88},
5800    institution = {Institute of Informatics, University of Warsaw},
5801    address     = {Pkin 8th Floor, 00-901 Warsaw, Poland},
5802    number      = {},
5803    month       = dec,
5804    year        = 1988,
5805}
5806
5807@mastersthesis{Schluntz17,
5808    author      = {Robert Schluntz},
5809    title       = {Resource Management and Tuples in C$\mathbf{\forall}$},
5810    school      = {School of Computer Science, University of Waterloo},
5811    year        = 2017,
5812    address     = {Waterloo, Ontario, Canada, N2L 3G1},
5813    note        = {[[unpublished]]}
5814}
5815
5816@article{FH91,
5817    keywords    = {lcc},
5818    contributer = {gjditchfield@plg},
5819    author      = {Christopher W. Fraser and David R. Hanson},
5820    title       = {A Retargetable Compiler for {ANSI} {C}},
5821    journal     = sigplan,
5822    year        = 1991,
5823    month       = oct, volume = 26, number = 10, pages = {29-43},
5824    abstract    = {
5825        {\tt lcc} is a new retargetable compiler for ANSI C.  Versions for
5826        the VAX, Motorola 68020, SPARC, and MIPS are in production use at
5827        Princeton University and at AT\&T Bell Laboratories.  With a few
5828        exceptions, little about {\tt lcc} is unusual---it integrates
5829        several well engineered, existing techniques---but it is smaller
5830        and faster than most other C compilers, and it generates code of
5831        comparable quality.  {\tt lcc}'s target-independent front end
5832        performs a few simple, but effective, optimizations that contribute
5833        to good code; examples include simulating register declarations and
5834        partitioning switch statements into dense tables.  It also
5835        implements target-independent function tracing and expression-level
5836        profiling.
5837    }
5838}
5839
5840@article{Algol68revised,
5841    keywords    = {},
5842    contributer = {gjditchfield@plg},
5843    author      = {A. van Wijngaarden and B. J. Mailloux and J. E. L. Peck and
5844        C. H. A. Koster and M. Sintzoff and C. H. Lindsey and L. G. L. T.
5845        Meertens and R. G. Fisher},
5846    title       = {Revised Report on the Algorithmic Language {ALGOL} 68},
5847    journal     = sigplan,
5848    year        = 1977,
5849    month       = may,
5850    volume      = 12,
5851    number      = 5,
5852    pages       = {1-70}
5853}
5854
5855@article{scheme,
5856    keywords    = {},
5857    contributer = {gjditchfield@plg},
5858    author      = {Jonathan Rees and William Clinger},
5859    title       = {Revised$^3$ Report on the Algorithmic Language {S}cheme},
5860    journal     = sigplan,
5861    year        = 1986,
5862    month       = dec,
5863    volume      = 21,
5864    number      = 12,
5865    pages       = {37-79},
5866}
5867
5868@article{scheme5,
5869    keywords    = {scheme},
5870    contributer = {pabuhr@plg},
5871    author      = {H. Abelson and Adams, IV, N. I. and D. H. Bartley and G. Brooks and R. K. Dybvig and D. P. Friedman and
5872                   R. Halstead and C. Hanson and C. T. Haynes and E. Kohlbecker and D. Oxley and K. M. Pitman and G. J. Rozas and
5873                   G. L. Steele Jr. and G. J. Sussman and M. Wand and \emph{Ed. by} Richard Kelsey and William Clinger and Jonathan Rees},
5874    title       = {Revised$^5$ Report on the Algorithmic Language {S}cheme},
5875    journal     = sigplan,
5876    year        = 1998,
5877    month       = sep,
5878    volume      = 33,
5879    number      = 9,
5880    pages       = {26-76},
5881}
5882
5883@manual{Rust,
5884    keywords    = {Rust programming language},
5885    contributer = {pabuhr@plg},
5886    author      = {{Rust}},
5887    title       = {The {Rust} Programming Language},
5888    organization= {The Rust Project Developers},
5889    year        = 2015,
5890    note        = {\href{https://doc.rust-lang.org/reference.html}{https://\-doc.rust-lang\-.org/\-reference.html}},
5891}
5892
5893% S
5894
5895@manual{Scala,
5896    keywords    = {Scala programming language},
5897    contributer = {pabuhr@plg},
5898    author      = {{Scala}},
5899    title       = {{Scala} Language Specification, Version 2.11},
5900    organization= {\'{E}cole Polytechnique F\'{e}d\'{e}rale de Lausanne},
5901    year        = 2016,
5902    note        = {\href{http://www.scala-lang.org/files/archive/spec/2.11}{http://\-www.scala-lang.org/\-files/\-archive/\-spec/\-2.11}},
5903}
5904
5905@inproceedings{Michael04,
5906    keywords    = {lock free, dynamic memory allocation},
5907    contributer = {pabuhr@plg},
5908    author      = {Maged M. Michael},
5909    title       = {Scalable Lock-free Dynamic Memory Allocation},
5910    booktitle   = {PLDI '04: Proceedings of the ACM SIGPLAN 2004 Conference on Programming Language Design and Implementation},
5911    location    = {Washington DC, USA},
5912    publisher   = {ACM},
5913    address     = {New York, NY, USA},
5914    volume      = 39,
5915    year        = 2004,
5916    month       = jun,
5917    pages       = {35-46},
5918}
5919
5920@article{Anderson92,
5921    keywords    = {light-weight tasks},
5922    contributer = {pabuhr@plg},
5923    author      = {Thomas E. Anderson and Brian N. Bershad and Edward D. Lazowska and Henry M. Levy},
5924    title       = {Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism},
5925    journal     = tocs,
5926    volume      = 10,
5927    number      = 1,
5928    month       = feb,
5929    year        = 1992,
5930    pages       = {53-79},
5931}
5932
5933@manual{SELF,
5934    keywords    = {programming language, obect-oriented, polymorphism},
5935    contributer = {pabuhr@plg},
5936    author      = {Ole Agesen and Lars Bak and Craig Chambers and Bay-Wei Chang and Urs H{\o}lzle
5937                   and John H. Maloney and Randall B. Smith and David Ungar and Mario Wolczko},
5938    title       = {The {SELF} 3.0 Programmer's Reference Manual},
5939    organization= {Sun Microsystems, Inc., and Stanford University},
5940    year        = 1993,
5941}
5942
5943@inproceedings{Cardelli84,
5944    keywords    = {subtypes, recursive types, records, variants, object oriented},
5945    contributer = {gjditchfield@plg},
5946    author      = {Luca Cardelli},
5947    title       = {A Semantics of Multiple Inheritance},
5948    booktitle   = {Semantics of Data Types},
5949    year        = 1984,
5950    pages       = {51-67},
5951    editor      = {G. Kahn and D. B. MacQueen and G. D. Plotkin},
5952    publisher   = {Springer},
5953    note        = {Lecture Notes in Computer Science v. 173},
5954}
5955
5956@techreport{Adve95,
5957    keywords    = {shared memory, consistency models},
5958    contributer = {pabuhr@plg},
5959    author      = {Sarita V. Adve and Kourosh Gharachorloo},
5960    title       = {Shared Memory Consistency Models: A Tutorial},