source: doc/bibliography/cfa.bib @ 71b5d4d3

aaron-thesisarm-ehcleanup-dtorsctordeferred_resndemanglerenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxmemorynew-astnew-ast-unique-exprnew-envno_listpersistent-indexerpthread-emulationqualifiedEnumresolv-newwith_gc
Last change on this file since 71b5d4d3 was 71b5d4d3, checked in by Aaron Moss <a3moss@…>, 6 years ago

Add Pennello et al. citation to Comp II draft

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