source: doc/bibliography/cfa.bib@ cf0b892

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 resolv-new with_gc
Last change on this file since cf0b892 was 7e17503, checked in by Peter A. Buhr <pabuhr@…>, 8 years ago

update all ISO/IEC citations

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