source: doc/bibliography/pl.bib@ 5f08961d

ADT aaron-thesis arm-eh ast-experimental cleanup-dtors deferred_resn demangler enum forall-pointer-decay jacob/cs343-translation jenkins-sandbox new-ast new-ast-unique-expr new-env no_list persistent-indexer pthread-emulation qualifiedEnum with_gc
Last change on this file since 5f08961d was 1f8865e, checked in by Peter A. Buhr <pabuhr@…>, 8 years ago

harmonize printing of Cforall name

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