source: doc/bibliography/cfa.bib@ 579263a

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

fix Thompson90new citation

  • Property mode set to 100644
File size: 226.3 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{GMP,
3040 keywords = {GMP arbitrary-precision library},
3041 contributer = {pabuhr@plg},
3042 title = {{GNU} Multiple Precision Arithmetic Library},
3043 author = {GMP},
3044 organization= {GNU},
3045 year = 2016,
3046 note = {\href{https://gmplib.org}{https://\-gmplib.org}},
3047}
3048
3049@manual{Go,
3050 keywords = {Go programming language},
3051 contributer = {pabuhr@plg},
3052 title = {{Go} Programming Language},
3053 author = {Robert Griesemer and Rob Pike and Ken Thompson},
3054 organization= {Google},
3055 year = 2009,
3056 note = {\href{http://golang.org/ref/spec}{http://\-golang.org/\-ref/\-spec}},
3057}
3058
3059@article{Dijkstra68a,
3060 keywords = {goto},
3061 contributer = {pabuhr@plg},
3062 author = {Edsger W. Dijkstra},
3063 title = {Go To Statement Considered Harmful},
3064 journal = cacm,
3065 month = mar,
3066 year = 1968,
3067 volume = 11,
3068 number = 3,
3069 pages = {147-148},
3070 note = {Reprinted in \cite{Yourdon79} pp. 29--36.},
3071}
3072
3073@online{GObject,
3074 keywords = {GObject},
3075 contributor = {a3moss@uwaterloo.ca},
3076 author = {{GObject}},
3077 organization= {The GNOME Project},
3078 title = {{GObject} Reference Manual},
3079 year = 2014,
3080 url = {https://developer.gnome.org/gobject/stable/},
3081 urldate = {2017-04-04}
3082}
3083
3084@article{Choi91,
3085 keywords = {contra-variance, functions},
3086 contributer = {pabuhr@plg},
3087 author = {Injun Choi and Michael V. Mannino},
3088 title = {Graph Interpretation of Methods: A Unifying Framework for Polymorphism in Object-Oriented Programming},
3089 journal = {OOPS Messenger},
3090 volume = 2,
3091 number = 1,
3092 month = jan,
3093 year = 1991,
3094 pages = {38-54},
3095}
3096
3097@misc{GNU-C,
3098 keywords = {C, ANSI C},
3099 contributer = {pabuhr@plg},
3100 author = {Richard Stallman},
3101 title = {The Free Software Foundation's Gnu {C} Compiler},
3102 howpublished= {Free Software Foundation, 1000 Mass Ave., Cambridge, MA, U.S.A., 02138},
3103 year = 1989,
3104}
3105
3106@article{Dijkstra:green,
3107 keywords = {ada},
3108 contributer = {gjditchfield@plg},
3109 author = {Edsger W. Dijkstra},
3110 title = {On the GREEN Language submitted to the DoD},
3111 journal = sigplan,
3112 year = 1978,
3113 month = oct,
3114 volume = 13,
3115 number = 10,
3116 pages = {16-21}
3117}
3118
3119@inproceedings{Miller02,
3120 keywords = {exception handling},
3121 contributer = {pabuhr@plg},
3122 author = {Robert Miller and Anand Tripathi},
3123 title = {The Guardian Model for Exception Handling in Distributed Systems},
3124 booktitle = {21st Symposium on Reliable Distributed Systems},
3125 organization= {IEEE},
3126 address = {Suita, Japan},
3127 year = 2002,
3128 month = oct,
3129 pages = {304-313}
3130}
3131
3132@phdthesis{Chen09,
3133 author = {Jun Chen},
3134 title = {Guided Testing of Concurrent Programs Using Value Schedules},
3135 school = {University of Waterloo},
3136 year = 2009,
3137 month = sep,
3138 address = {Waterloo, Ontario, Canada, N2L 3G1},
3139 note = {\textsf{http://uwspace.uwaterloo.ca/bitstream/\-10012/\-4735/\-1/\-Chen-Jun.pdf}},
3140}
3141
3142@misc{GNU-C++,
3143 keywords = {C++, GNU C},
3144 contributer = {pabuhr@plg},
3145 author = {Michael D. Tiemann},
3146 title = {User's Guide to GNU {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
3147 howpublished= {Free Software Foundation, 1000 Mass Ave., Cambridge, MA, U.S.A., 02138},
3148 month = mar,
3149 year = 1990,
3150}
3151
3152% H
3153
3154@article{Michael04a,
3155 keywords = {Lock-free, synchronization, concurrent programming, memory management, multiprogramming, dynamic data structures},
3156 author = {Maged M. Michael},
3157 title = {Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects},
3158 journal = ieeepds,
3159 volume = 15,
3160 number = 6,
3161 month = jun,
3162 year = 2004,
3163 pages = {491-504},
3164 publisher = {IEEE Press},
3165 address = {Piscataway, NJ, USA},
3166}
3167
3168@techreport{Hermes90,
3169 keywords = {processes, distributed computing},
3170 contributer = {pabuhr@plg},
3171 author = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini},
3172 title = {Hermes: A Language for Distributed Computing},
3173 institution = {IBM T. J. Watson Research Center},
3174 address = {Yorktown Heights, New York, U.S.A., 10598},
3175 month = oct,
3176 year = 1990,
3177}
3178
3179@book{Hermes91,
3180 keywords = {processes, distributed computing},
3181 contributer = {pabuhr@plg},
3182 author = {Robert E. Strom and David F. Bacon and Arthur P. Goldberg and Andy Lowry and Daniel M. Yellin and Shaula Alexander Yemini},
3183 title = {Hermes: A Language for Distributed Computing},
3184 publisher = {Prentice-Hall},
3185 address = {Englewood Cliffs},
3186 series = {Innovative Technology},
3187 year = 1991,
3188}
3189
3190@article{katzenelson83b,
3191 contributer = {gjditchfield@plg},
3192 author = "Jacob Katzenelsen",
3193 title = "Higher Level Programming and Data Abstraction---A Case Study using Enhanced C",
3194 journal = spe,
3195 year = 1983,
3196 volume = 13,
3197 number = 7,
3198 pages = {577-596},
3199 month = jul
3200}
3201
3202@techreport{Hoare73,
3203 keywords = {},
3204 contributer = {gjditchfield@plg},
3205 author = {C. A. R. Hoare},
3206 title = {Hints on Programming Language Design},
3207 institution = {Stanford University Computer Science Department},
3208 year = 1973,
3209 month = dec,
3210 number = {CS-73-403},
3211 note = {Reprinted in \cite{pldesign}.}
3212}
3213
3214@article{Dijkstra71,
3215 keywords = {monitor, secretary},
3216 contributer = {pabuhr@plg},
3217 author = {E. W. Dijkstra},
3218 title = {Hierarchical Ordering of Sequential Processes},
3219 journal = acta,
3220 volume = 1,
3221 pages = {115-138},
3222 year = 1971,
3223}
3224
3225@article{Buhr15a,
3226 keywords = {software solution, mutual exclusion, performance experiment},
3227 author = {Peter A. Buhr and David Dice and Wim H. Hesselink},
3228 title = {High-Performance {$N$}-Thread Software Solutions for Mutual Exclusion},
3229 journal = ccpe,
3230 volume = 27,
3231 number = 3,
3232 pages = {651-701},
3233 month = mar,
3234 year = 2015,
3235}
3236
3237@article{Ackermann28,
3238 keywords = {recursion, Ackermann function},
3239 contributer = {pabuhr@plg},
3240 author = {Wilhelm Ackermann},
3241 title = {Zum Hilbertschen Aufbau der reellen Zahlen},
3242 publisher = {Springer},
3243 journal = mathann,
3244 number = 1,
3245 volume = 99,
3246 pages = {118-133},
3247 month = dec,
3248 year = 1928,
3249}
3250
3251@inproceedings{typeclass,
3252 keywords = {Hindley/Miller type systems, Haskell},
3253 contributer = {gjditchfield@plg},
3254 author = {Philip Wadler and Stephen Blott},
3255 title = {How to make {\em Ad-Hoc} Polymorphism Less {\em Ad-Hoc}},
3256 booktitle = popl,
3257 year = 1989,
3258 pages = {60-76},
3259 organization= {Association for Computing Machinery}
3260}
3261
3262% I
3263
3264@book{IBM370,
3265 keywords = {370, IBM},
3266 contributer = {pabuhr@plg},
3267 key = {IBM370},
3268 title = {{IBM} System/370 Principles of Operation},
3269 publisher = {IBM},
3270 number = {GA22-7000-8},
3271 month = oct,
3272 year = 1981,
3273 edition = {9th}
3274}
3275
3276@book{Icon,
3277 keywords = {Icon},
3278 contributer = {pabuhr@plg},
3279 author = {Ralph E. Griswold and Madge T. Griswold},
3280 title = {The Icon Programming Language},
3281 publisher = {Prentice-Hall},
3282 address = {Englewood Cliffs},
3283 year = 1983,
3284}
3285
3286@inproceedings{Valois94,
3287 keywords = {lock free, queue},
3288 contributer = {pabuhr@plg},
3289 author = {John D. Valois},
3290 title = {Implementing Lock-Free Queues},
3291 booktitle = {Seventh International Conference on Parallel and Distributed Computing Systems},
3292 address = {Las Vegas, Nevada, U.S.A.},
3293 year = {1994},
3294 pages = {64-69},
3295}
3296
3297@article{Hehner81,
3298 keywords = {concurrency, critical section, bakery algorithm},
3299 contributer = {pabuhr@plg},
3300 author = {Eric C. R. Hehner and R. K. Shyamasundar},
3301 title = {An Implementation of {P} and {V}},
3302 journal = ipl,
3303 year = 1981,
3304 month = aug,
3305 volume = 12,
3306 number = 4,
3307 pages = {196-198},
3308}
3309
3310@incollection{Steenkiste91,
3311 keywords = {lisp},
3312 contributer = {gjditchfield@plg},
3313 author = {Peter A. Steenkiste},
3314 title = {The Implementation of Tags and Run-Time Checking},
3315 booktitle = {Topics in Advanced Language Implementation},
3316 pages = {3-24},
3317 year = 1991,
3318 editor = {Peter Lee},
3319 chapter = {1},
3320 publisher = {The MIT Press}
3321}
3322
3323@techreport{Roberts89,
3324 keywords = {},
3325 contributer = {pabuhr@plg},
3326 author = {Eric S. Roberts},
3327 title = {Implementing Exceptions in {C}},
3328 institution = {Digital Systems Research Center},
3329 address = {130 Lytton Avenue, Palo Alto, California, 94301},
3330 number = {40},
3331 month = mar,
3332 year = 1989,
3333}
3334
3335@mastersthesis{Bilson03,
3336 keywords = {Cforall, parametric polymorphism, overloading},
3337 contributer = {pabuhr@plg},
3338 author = {Richard C. Bilson},
3339 title = {Implementing Overloading and Polymorphism in Cforall},
3340 school = {School of Computer Science, University of Waterloo},
3341 year = 2003,
3342 address = {Waterloo, Ontario, Canada, N2L 3G1},
3343 note = {\href{http://plg.uwaterloo.ca/theses/BilsonThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-BilsonThesis.pdf}},
3344}
3345
3346@article{Buhr05b,
3347 keywords = {monitor, automatic signal, implicit signal},
3348 contributer = {pabuhr@plg},
3349 author = {Peter A. Buhr and Ashif S. Harji},
3350 title = {Implicit-signal monitors},
3351 journal = toplas,
3352 volume = 27,
3353 number = 6,
3354 month = nov,
3355 year = 2005,
3356 issn = {0164-0925},
3357 pages = {1270--1343},
3358 publisher = {ACM Press},
3359 address = {New York, NY, USA},
3360}
3361
3362@article{Baker77,
3363 author = {Henry C. Baker, Jr. and Carl Hewitt},
3364 title = {The Incremental Garbage Collection of Processes},
3365 journal = {SIGART Bulletin},
3366 publisher = {ACM},
3367 address = {New York, NY, USA},
3368 month = aug,
3369 year = 1977,
3370 pages = {55-59},
3371 issn = {0163-5719},
3372}
3373
3374@book{Algol68,
3375 keywords = {Algol68},
3376 contributer = {pabuhr@plg},
3377 author = {C. H. Lindsey and S. G. van der Meulen},
3378 title = {Informal Introduction to ALGOL 68},
3379 publisher = {North-Holland},
3380 address = {London},
3381 year = 1977,
3382}
3383
3384@inproceedings{Cook90,
3385 keywords = {f-bounded polymorhpism, lambda calculus},
3386 contributer = {gjditchfield@plg},
3387 author = {William R. Cook and Walter L. Hill and Peter S. Canning},
3388 title = {Inheritance is Not Subtyping},
3389 booktitle = popl,
3390 year = 1990,
3391 pages = {125-135},
3392 organization= {Association for Computing Machinery},
3393 abstract = {
3394 In typed object-oriented languages the subtype relation is
3395 typically based on the inheritance hierarchy. This approach,
3396 however, leads either to insecure type-systems or to restrictions
3397 on inheritance that make it less flexible than untyped Smalltalk
3398 inheritance. We present a new typed model of inheritance that
3399 allows more of the flexibility of Smalltalk inheritance within a
3400 statically-typed system. Significant features of our analysis are
3401 the introduction of polymorphism into the typing of inheritance and
3402 the uniform application of inheritance to objects, classes and
3403 types. The resulting notion of {\em type inheritance} allows us to
3404 show that the type of an inherited object is an inherited type but
3405 not always a subtype.
3406 }
3407}
3408
3409@inproceedings{MMR92,
3410 keywords = {},
3411 contributer = {gjditchfield@plg},
3412 author = {Robert E. Minnear and Patrick A. Muckelbauer and Vincent F. Russo},
3413 title = {Integrating the {Sun Microsystems} {XDR/RPC} Protocols
3414 into the {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Stream Model},
3415 booktitle = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference Proceedings},
3416 year = 1992,
3417 month = aug,
3418 pages = {295-312},
3419 organization= {USENIX Association},
3420 address = {2590 Ninth Street, Suite 215, Berkeley, CA 94710},
3421 abstract = {
3422 This paper reports our experiences integrating the Sun Microsystems
3423 RPC and XDR protocol specifications into the C++ model of
3424 input/output streams. As part of the {\it Renaissance} operating
3425 system project, we wish to construct network servers and clients,
3426 written in C++, which interoperate with existing UNIX clients
3427 and servers. We discovered that, although it would be possible to
3428 re-implement the procedural based XDR/RPC implementation
3429 distributed by Sun Microsystems in C++, it is far cleaner to
3430 integrate the protocols with the C++ I/O stream model. We
3431 feel the resulting model provides a cleaner way of implementing RPC
3432 clients and servers without losing functionality or compatibility
3433 with existing clients and servers.
3434 }
3435}
3436
3437@inproceedings{Zuo08,
3438 keywords = {shared memory systems,intelligent multiport memory,multiprocessors systems,shared memory system},
3439 author = {Wang Zuo and Wang Zuo and Li Jiaxing},
3440 title = {An Intelligent Multi-Port Memory},
3441 booktitle = {Symposium on Intelligent Information Technology Application Workshops, Shanghai, China},
3442 month = dec,
3443 year = 2008,
3444 pages = {251-254},
3445 publisher = {IEEE Computer Society},
3446 address = {Los Alamitos, CA, USA},
3447}
3448
3449@book{Francez96,
3450 keywords = {await, formal},
3451 contributer = {pabuhr@plg},
3452 author = {Nissim Francez and Ira R. Forman},
3453 title = {Interacting Processes: A Multiparty Approach to Coordinated Distributed Programming},
3454 publisher = {Addison-Wesley},
3455 address = {Boston},
3456 series = {ACM Press Books},
3457 year = 1996,
3458}
3459
3460@article{Labreche90,
3461 keywords = {concurrency, C++},
3462 contributer = {pabuhr@plg},
3463 author = {Pierre Labr{\`{e}}che},
3464 title = {Interactors: A Real-Time Executive with Multiparty Interactions in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
3465 journal = sigplan,
3466 volume = 25,
3467 number = 4,
3468 month = apr,
3469 year = 1990,
3470 pages = {20-32},
3471}
3472
3473@inproceedings{interfaces,
3474 keywords = {parameterized interfaces, classes, recursion/inheritance},
3475 contributer = {gjditchfield@plg},
3476 author = {Peter S. Canning and William R. Cook and Walter L. Hill and
3477 Walter G. Olthoff},
3478 title = {Interfaces for Strongly-Typed Object-Oriented Programming},
3479 crossref = "OOPSLA89",
3480 pages = {457-467},
3481 abstract = {
3482 This paper develops a system of explicit interfaces for
3483 object-oriented programming. The system provides the benefits of
3484 module interfaces found in languages like Ada and Modula-2 while
3485 preserving the expressiveness that gives untyped object-oriented
3486 languages like Smalltalk their flexibility. Interfaces are
3487 interpreted as polymorphic types to make the system sufficiently
3488 powerful. We use interfaces to analyze the properties of
3489 inheritance, and identify three distinct kinds of inheritance in
3490 object-oriented programming, corresponding to objects, classes, and
3491 interfaces, respectively. Object interfaces clarify the
3492 distinction between interface containment and inheritance and give
3493 insight into limitations caused by equating the notions of type and
3494 class in many typed object-oriented programming languages.
3495 Interfaces also have practical consequences for design,
3496 specification, and maintenance of object-oriented systems.
3497 }
3498}
3499
3500@phdthesis{Girard72,
3501 keywords = {universal quantification},
3502 contributer = {gjditchfield@plg},
3503 author = {J.-Y. Girard},
3504 title = {Interpretation fonctionelle et elimination des coupures de
3505 l'arithmetique d'ordre superieur},
3506 school = {Universite Paris},
3507 year = {1972}
3508}
3509
3510@article{Karaorman93,
3511 keywords = {Eiffel, concurrency libraries},
3512 contributer = {pabuhr@plg},
3513 author = {Murat Karaorman and John Bruno},
3514 title = {Introducing Concurrency to a Sequential Language},
3515 journal = cacm,
3516 month = sep,
3517 year = 1993,
3518 volume = 36,
3519 number = 9,
3520 pages = {103-116}
3521}
3522
3523@book{Corman92,
3524 keywords = {PRAM, parallel algorithms},
3525 contributer = {pabuhr@plg},
3526 author = {Thomas H. Cormen and Charles E. Leiserson and Ronald L. Rivest},
3527 title = {Introduction to Algorithms},
3528 publisher = {MIT Press/McGraw-Hill},
3529 address = {Cambridge},
3530 series = {Electrical Engineering and Computer Science Series},
3531 year = 1992,
3532}
3533
3534@book{Hopcroft79,
3535 keywords = {finite-state machine, push-dowm automata},
3536 contributer = {pabuhr@plg},
3537 author = {John E. Hopcroft and Jeffrey D. Ullman},
3538 title = {Introduction to Automata Theory, Languages and Computation},
3539 publisher = {Addison-Wesley},
3540 address = {Boston},
3541 year = 1979,
3542}
3543
3544@techreport{walker87,
3545 keywords = {CCS},
3546 contributer = {gjditchfield@plg},
3547 author = {David Walker},
3548 title = {Introduction to a Calculus of Communicating Systems},
3549 institution = {Laboratory for Foundations of Computer Science},
3550 year = 1987,
3551 address = {Department of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ},
3552 month = jun,
3553 number = {ECS-LFCS-87-22},
3554}
3555
3556@article{katzenelson83a,
3557 author = {Jacob Katzenelson},
3558 title = {Introduction to Enhanced C (EC)},
3559 journal = spe,
3560 volume = 13,
3561 number = 7,
3562 year = 1983,
3563 month = jul,
3564 pages = {551-576},
3565}
3566
3567@book{Deitel90,
3568 keywords = {concurrency, operating systems},
3569 contributer = {pabuhr@plg},
3570 author = {Harvey M. Deitel},
3571 title = {An Introduction to Operating Systems},
3572 publisher = {Addison-Wesley},
3573 address = {Boston},
3574 year = 1990,
3575 edition = {2nd},
3576}
3577
3578@techreport{Birrell89,
3579 keywords = {threads, monitors},
3580 contributer = {pabuhr@plg},
3581 author = {Andrew D. Birrell},
3582 title = {An Introduction to Programming with Threads},
3583 institution = {Digital Systems Research Center},
3584 address = {130 Lytton Avenue, Palo Alto, California, 94301},
3585 number = {35},
3586 month = jan,
3587 year = 1989,
3588 note = {{\textsf{http://www.hpl.hp.com/\-techreports/\-Compaq-DEC/\-SRC-RR-35.html}}},
3589
3590}
3591
3592@article{t/o,
3593 keywords = {Trellis/Owl},
3594 contributer = {gjditchfield@plg},
3595 author = {Craig Schaffert and Topher Cooper and Bruce Bullis and Mike Kilian and Carrie Wilpot},
3596 title = {An Introduction to Trellis/Owl},
3597 journal = sigplan,
3598 volume = 21,
3599 number = 11,
3600 year = 1986,
3601 month = nov,
3602 pages = {9-16},
3603}
3604
3605@inproceedings{Hibbard77,
3606 keywords = {algol-68, concurrency},
3607 contributer = {pabuhr@plg},
3608 author = {Peter G. Hibbard and P. Knueven and B. W. Leverett},
3609 title = {Issues in the Efficient Implementation and Use of Multiprocessing in {Algol} 68},
3610 booktitle = {Proceedings of the 5th Annual iii Conference},
3611 address = {Guidel, France},
3612 month = may,
3613 year = 1977,
3614 pages = {203-221}
3615}
3616
3617@inproceedings{Miller97,
3618 keywords = {exception handling, software-engineering},
3619 contributer = {pabuhr@plg},
3620 author = {Robert Miller and Anand Tripathi},
3621 title = {Issues with Exception Hnadling in Object-Oriented Systems},
3622 booktitle = {ECOOP'97},
3623 publisher = {Springer},
3624 volume = 1241,
3625 series = {Lecture Notes in Computer Science},
3626 year = 1997,
3627 pages = {85-103}
3628}
3629
3630@article{Murer96,
3631 keywords = {interators, generators, cursors},
3632 contributer = {pabuhr@plg},
3633 author = {Stephan Murer and Stephen Omohundro and David Stoutamire and Clemens Szyperski},
3634 title = {Iteration Abstraction in Sather},
3635 journal = toplas,
3636 month = jan,
3637 year = 1996,
3638 volume = 18,
3639 number = 1,
3640 pages = {1-15},
3641}
3642
3643% J
3644
3645@book{Java,
3646 keywords = {Java},
3647 contributer = {pabuhr@plg},
3648 author = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha},
3649 title = {The {Java} Language Specification},
3650 publisher = {Addison-Wesley},
3651 address = {Reading},
3652 year = 2000,
3653 edition = {2nd},
3654}
3655
3656@manual{Java8,
3657 keywords = {Java SE 8},
3658 contributer = {pabuhr@plg},
3659 author = {James Gosling and Bill Joy and Guy Steele and Gilad Bracha and Alex Buckley},
3660 title = {{Java} Language Spec.},
3661 organization= {Oracle},
3662 publisher = {Oracle},
3663 year = 2015,
3664 edition = {Java SE8},
3665}
3666
3667@manual{JUC,
3668 keywords = {Java concurrency library},
3669 contributer = {pabuhr@plg},
3670 title = {java.util.concurrency},
3671 author = {Doug Lea},
3672 organization= {Oracle},
3673 year = 2014,
3674 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}}},
3675}
3676
3677% K
3678
3679@article{Duggan96,
3680 keywords = {concurrency, critical section},
3681 contributer = {pabuhr@plg},
3682 author = {Dominic Duggan and Gordon V. Cormack and John Ophel},
3683 title = {Kinded Type Inference for Parametric Overloading},
3684 journal = acta,
3685 volume = 33,
3686 number = 1,
3687 year = 1996,
3688 pages = {21-68},
3689}
3690
3691@article{Peter35,
3692 keywords = {recursion, Ackermann function},
3693 contributer = {pabuhr@plg},
3694 author = {R{\'{o}}zsa P{\'{e}}ter},
3695 title = {Konstruktion nichtrekursiver Funktionen},
3696 publisher = {Springer},
3697 journal = mathann,
3698 number = 111,
3699 volume = 1,
3700 pages = {42-60},
3701 month = dec,
3702 year = 1935,
3703}
3704
3705% L
3706
3707@TechReport{WVWR88:L,
3708 contributer = {gjditchf@plg},
3709 author = {Hanno Wupper and Jan Vytopil and Martin Wieczorek and Dick de Reus},
3710 title = {{L}_{3333}: A Simple Language with Static Typing of Hard Real-Time Constraints},
3711 institution = {Department of Informatics, Faculty of Science, Catholic University Nijmegen},
3712 year = 1988,
3713 number = {88-3},
3714 address = {Katholieke Universiteit Nijmegen, Fakulteit der Wiskunde
3715 en Natuurwetenschappen, Infomatica V, Toernooiveld, 6512
3716 ED Nijmegen, The Netherlands},
3717 month = apr,
3718 annote = {A polymorphic typed lambda calculus with \begin{itemize}
3719 \item A trivial type, ``!'', with a single element.
3720 \item Labelled types, distinct from each other.
3721 ``!False'' and ``!True'' are distinct types, each
3722 containing a single value serving as boolean false and
3723 true. ``2'' is an abbreviation for ``!0 succ succ'', the
3724 type containing only 2.
3725 \item Disjunction types ``\{| !False, !True |\}''. Interval
3726 types are abbreviations for disjunctions.
3727 \item Conjunction types ``\{\& real Re, real Im \&\}'', where
3728 ``Re'' and ``Im'' are type labels that distinguish between the
3729 fields.
3730 \item Pair types ``\{^ a, b ^\}'', for use in recursive types
3731 and dyadic infix functions.
3732 \item Function types, universal types, existential types,
3733 and subtyping (viewed as coercion), as in Fun.
3734 \end{itemize}
3735 Disjunctions and conjunctions types are associative and
3736 commutative (i.e. flat). Each type has a matching
3737 constructor. Functions use pattern matching on type
3738 labels to strip labels and extract conjunction fields:
3739 \begin{verbatim}
3740 \lambda n {0...1000000 Guilders}. ... n ...
3741 -- both argument and n are amounts in Guilders.
3742 \lambda n {0...1000000} Guilders. ... n ...
3743 -- argument in Guilders, but n is in 0...1000000.
3744 \end{verbatim}
3745 ``Function bundles'' (conjunctions of functions), applied
3746 to arguments, replace Dijkstra's guarded if...fi, but the
3747 bundles are first-class and the guards are part of their
3748 type.
3749
3750 The same trick used to define the type ``2'' is used to
3751 move absolute times into the type system, to allow static
3752 checking. ``0`'' denotes a time before the system begins
3753 execution. ``\#`'' denotes ``eventually'', and ``?`''
3754 denotes ``maybe never''. ``a\\t'' and ``a@t'' are types
3755 of a value of type a that will be available no later
3756 (earlier) than time t. Universals and existentials use
3757 subtyping to parameterize functions by start time:
3758 \begin{verbatim}
3759 let f {\forall t > \#`}. {a\t} \on {b\t+d}
3760 f{then} y -- argument y must be available at time ``then''.
3761 \end{verbatim}
3762 Functions can return before their arguments are available
3763 if they don't use them. However, function {\em bundles}
3764 can't return until their result type is known, so the
3765 lower and upper time bounds of the bundle are the
3766 second-last upper bound of the component functions: at
3767 that time, there is only one alternative left.
3768
3769 Explicit time parameterization allows slack in time
3770 specification. Tools could point out slack or determine
3771 degree of parallelism.}
3772}
3773
3774@mastersthesis{Clarke90,
3775 keywords = {concurrency, postponing requests},
3776 contributer = {pabuhr@plg},
3777 author = {Charles L. A. Clarke},
3778 title = {Language and Compiler Support for Synchronous Message Passing Architectures},
3779 school = {University of Waterloo},
3780 year = 1990,
3781 address = {Waterloo, Ontario, Canada, N2L 3G1}
3782}
3783
3784@article{Tennent77,
3785 keywords = {abstraction, correspondence, Pascal},
3786 contributer = {gjditchfield@plg},
3787 author = {R. D. Tennent},
3788 title = {Language Design Methods Based on Semantic Principles},
3789 journal = acta,
3790 year = 1977,
3791 volume = 8,
3792 number = 2,
3793 pages = {97-112},
3794 note = {reprinted in \cite{pldesign}},
3795 abstract = {
3796 Two language design methods based on principles derived from the
3797 denotational approach to programming language semantics are
3798 described and illustrated by an application to the language Pascal.
3799 The principles are, firstly, the correspondence between parametric
3800 and declarative mechanisms and secondly, a principle of abstraction
3801 for programming languages adapted from set theory. Several useful
3802 extensions and generalizations of Pascal emerge by applying these
3803 principles, including a solution to the array parameter problem,
3804 and a modularization facility.
3805 },
3806}
3807
3808@article{Liskov86,
3809 keywords = {synchronous communication, concurrency},
3810 contributer = {pabuhr@plg},
3811 author = {Barbara Liskov and Maurice Kerlihy and Lucy Gilbert},
3812 title = {Limitations of Synchronous Communication with Static
3813 Process Structure in Languages for Distributed Computing},
3814 journal = {},
3815 volume = {},
3816 number = {},
3817 month = {},
3818 year = {},
3819 pages = {},
3820}
3821
3822@article{Linda,
3823 keywords = {Linda, concurrency},
3824 contributer = {pabuhr@plg},
3825 author = {Nicholas Carriero and David Gelernter},
3826 title = {Linda in Context},
3827 journal = cacm,
3828 volume = 32,
3829 number = 4,
3830 month = apr,
3831 year = 1989,
3832 pages = {444-458}
3833}
3834
3835@book{Weissman67,
3836 keywords = {lisp},
3837 author = {Clark Weissman},
3838 title = {Lisp 1.5 Primer},
3839 publisher = {Dickenson Publishing},
3840 address = {Belmont},
3841 year = 1967,
3842}
3843
3844@article{Sundell08,
3845 keywords = {lock free, deque},
3846 contributer = {pabuhr@plg},
3847 author = {H{\r{a}}kan Sundell and Philippas Tsigas},
3848 title = {Lock-free Deques and Doubly Linked Lists},
3849 journal = {J. Parallel Distrib. Comput.},
3850 volume = 68,
3851 number = 7,
3852 year = 2008,
3853 pages = {1008-1020},
3854}
3855
3856@article{Cormack89,
3857 keywords = {parsing, LR, error recovery},
3858 contributer = {pabuhr@plg},
3859 author = {Gordon V. Cormack},
3860 title = {An {LR} Substring Parser for Noncorrecting Syntax Error Recovery},
3861 journal = sigplan,
3862 volume = 24,
3863 number = 7,
3864 month = jul,
3865 year = 1989,
3866 pages = {161-169},
3867 note = {Proceedings of the {SIGPLAN}~'89 Conference on Programming Language Design and Implementation}
3868}
3869
3870% M
3871
3872@book{M68K,
3873 keywords = {M680XX, Motorola},
3874 contributer = {pabuhr@plg},
3875 key = {Motorola},
3876 title = {M68000 Family Programmer's Reference Manual},
3877 publisher = {Motorola},
3878 year = 1992,
3879}
3880
3881@article{c++libs,
3882 keywords = {directory structure},
3883 contributer = {gjditchfield@plg},
3884 author = {J. M. Coggins and G. Bollella},
3885 title = {Managing {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Libraries},
3886 journal = sigplan,
3887 year = 1989,
3888 month = jun, volume = 24, number = 6, pages = {37-48},
3889 abstract = {
3890 This paper describes a scheme we have used to manage a large
3891 library written in the C++ language. The scheme imposes a
3892 directory structure, and represents dependency hierarchy in a
3893 globally accessible file we call the 'prelude' file. We also
3894 discuss the structure of the description files (makefiles) used
3895 with the UNIX options we have found to be useful in reducing the
3896 size of the library, and how to minimize recompilation time after
3897 trivial changes to the source code of the library.
3898 }
3899}
3900
3901@inproceedings{mprof,
3902 keywords = {malloc},
3903 contributer = {gjditchfield@plg},
3904 author = {Benjamin Zorn and Paul Hilfinger},
3905 title = {A Memory Allocation Profiler for {C} and Lisp Programs},
3906 booktitle = {Summer 1988 {USENIX} proceedings},
3907 year = 1988
3908}
3909
3910@manual{MMTk,
3911 keywords = {Java memory management},
3912 contributer = {pabuhr@plg},
3913 title = {MMTk: The Memory Management Toolkit},
3914 author = {Steve Blackburn and Robin Garner and Daniel Frampton},
3915 month = sep,
3916 year = 2006,
3917 note = {\textsf{http://cs.anu.edu.au/\-\char`\~Robin.Garner/\-mmtk-guide.pdf}},
3918}
3919
3920@article{Adve10,
3921 keywords = {Java memory management},
3922 contributer = {pabuhr@plg},
3923 author = {Sarita V. Adve and Hans-J. Boehm},
3924 title = {Memory Models: A Case for Rethinking Parallel Languages and Hardware},
3925 journal = cacm,
3926 volume = 53,
3927 number = 8,
3928 month = aug,
3929 year = 2010,
3930 pages = {90-101},
3931 publisher = {ACM},
3932 address = {New York, NY, USA},
3933}
3934@techreport{Mesa,
3935 keywords = {monitors, packages},
3936 contributer = {pabuhr@plg},
3937 author = {James G. Mitchell and William Maybury and Richard Sweet},
3938 title = {Mesa Language Manual},
3939 institution = {Xerox Palo Alto Research Center},
3940 number = {CSL--79--3},
3941 month = apr,
3942 year = 1979
3943}
3944
3945@article{Andrews89,
3946 keywords = {semaphore, split-binary, baton},
3947 contributer = {pabuhr@plg},
3948 author = {Gregory R. Andrews},
3949 title = {A Method for Solving Synronization Problems},
3950 journal = scp,
3951 volume = 13,
3952 number = 4,
3953 month = dec,
3954 year = 1989,
3955 pages = {1-21},
3956}
3957
3958@inproceedings{Mitchell78,
3959 keywords = {Mesa},
3960 contributer = {pabuhr@plg},
3961 author = {James G. Mitchell},
3962 title = {Mesa: A Designer's User Perspective},
3963 booktitle = {Spring CompCom 78},
3964 organization= {Sixteenth IEEE Computer Society International Conference},
3965 address = {San Francisco, California, U.S.A.},
3966 month = feb,
3967 year = 1978,
3968 pages = {36-39},
3969 note = {IEEE Catalog No. 78CH1328-4C},
3970}
3971
3972@article{Gentleman81,
3973 keywords = {messages, concurrency},
3974 contributer = {pabuhr@plg},
3975 author = {W. Morven Gentleman},
3976 title = {Message Passing between Sequential Processes:
3977 the Reply Primitive and the Administrator Concept},
3978 journal = spe,
3979 month = may,
3980 year = 1981,
3981 volume = 11,
3982 number = 5,
3983 pages = {435-466}
3984}
3985
3986@article{Cormack88,
3987 keywords = {concurrency},
3988 contributer = {pabuhr@plg},
3989 author = {G. V. Cormack},
3990 title = {A Micro Kernel for Concurrency in C},
3991 journal = spe,
3992 month = may,
3993 year = 1988,
3994 volume = 18,
3995 number = 4,
3996 pages = {485-491}
3997}
3998
3999@article{Buhr90a,
4000 keywords = {concurrency, light-weight process, shared memory},
4001 contributer = {pabuhr@plg},
4002 author = {Peter A. Buhr and Richard A. Stroobosscher},
4003 title = {The $\mu${S}ystem: Providing Light-Weight Concurrency on Shared-Memory Multiprocessor Computers Running {UNIX}},
4004 journal = spe,
4005 volume = 20,
4006 number = 9,
4007 month = sep,
4008 year = 1990,
4009 pages = {929-963},
4010}
4011
4012@techreport{uSystem,
4013 keywords = {C, concurrency, light-weight process, shared memory},
4014 contributer = {pabuhr@plg},
4015 author = {Peter A. Buhr and Hamish I. Macdonald and Richard A. Stroobosscher},
4016 title = {$\mu${S}ystem Annotated Reference Manual, Version 4.4.3},
4017 institution = {Department of Computer Science, University of Waterloo},
4018 address = {Waterloo, Ontario, Canada, N2L 3G1},
4019 month = sep,
4020 year = 1994,
4021 note = {{\small\textsf{ftp://\-plg.uwaterloo.ca/\-pub/\-uSystem/\-uSystem.ps.gz}}},
4022}
4023
4024@book{Mips4000,
4025 key = {Mips4000},
4026 title = {MIPS R4000 Microprocessor User's Manual},
4027 publisher = {MIPS Computer Systems Inc},
4028 year = 1991,
4029}
4030
4031@inproceedings{Mjolner,
4032 keywords = {Mjolner, hierarchical windows},
4033 contributer = {pabuhr@plg},
4034 author = {G\"{o}rel Hedin and Boris Magnusson},
4035 title = {The Mj{\o}lner Environment: Direct Interaction with Abstractions},
4036 booktitle = {Proceedings of the European Conference on Object Oriented Programming},
4037 organization= {ECOOP'88},
4038 publisher = {Springer},
4039 volume = 322,
4040 editor = {S. Gjessing and K. Nygaard},
4041 address = {Oslo, Norway},
4042 month = aug,
4043 year = 1988,
4044 pages = {41-54},
4045 note = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
4046}
4047
4048@article{Skillicorn98,
4049 keywords = {parallel models},
4050 contributer = {pabuhr@plg},
4051 author = {David B. Skillicorn and Domenico Talia},
4052 title = {Models and Languages for Parallel Computation},
4053 journal = acmcs,
4054 volume = 30,
4055 number = 2,
4056 month = jun,
4057 year = 1998,
4058 pages = {123-169},
4059}
4060
4061@article{Werther96,
4062 keywords = {C++, language syntax},
4063 contributer = {pabuhr@plg},
4064 author = {Ben Werther and Damian Conway},
4065 title = {A Modest Proposal: {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Resyntaxed},
4066 journal = sigplan,
4067 volume = 31,
4068 number = 11,
4069 month = nov,
4070 year = 1996,
4071 pages = {74-82},
4072}
4073
4074@book{Alexandrescu01,
4075 keywords = {c design-patterns programming},
4076 contributer = {pabuhr@plg},
4077 author = {Andrei Alexandrescu},
4078 title = {Modern C++ Design: Generic Programming and Design Patterns Applied},
4079 publisher = {Addison-Wesley Professional},
4080 address = {Boston},
4081 month = feb,
4082 year = 2001,
4083 isbn = {0201704315},
4084}
4085
4086@book{Tanenbaum92,
4087 keywords = {concurrency, operating systems},
4088 contributer = {pabuhr@plg},
4089 author = {Andrew S. Tanenbaum},
4090 title = {Modern Operating Systems},
4091 publisher = {Prentice-Hall},
4092 address = {Englewood Cliffs},
4093 year = 1992,
4094}
4095
4096@article{Wirth77,
4097 keywords = {modules, coroutines},
4098 contributer = {pabuhr},
4099 author = {Niklaus Wirth},
4100 title = {Modula: a Language for Modular Multiprogramming},
4101 journal = spe,
4102 month = {January--February},
4103 year = 1977,
4104 volume = 7,
4105 number = 1,
4106 pages = {3-35},
4107}
4108
4109@book{Harbison92,
4110 contributer = {mhcoffin},
4111 author = {Samuel P. Harbison},
4112 title = {Modula-3},
4113 publisher = {Prentise Hall, Inc.},
4114 year = {1992},
4115 comment = {This is a textbook for learning Modula-3.}
4116}
4117
4118@techreport{Modula-3:old,
4119 keywords = {Modula-3, inheritance, type extension},
4120 contributer = {gjditchfield@plg},
4121 author = {Luca Cardelli and James Donahue and Lucille Glassman and Mick
4122 Jordan and Bill Kalsow and Greg Nelson},
4123 title = {Modula-3 Report},
4124 institution = {Systems Research Center},
4125 address = {130 Lytton Avenue, Palo Alto, California 94301},
4126 month = aug,
4127 year = 1988,
4128 number = 31
4129}
4130
4131@article{Dueck90,
4132 keywords = {attribute grammars},
4133 contributer = {pabuhr@plg},
4134 author = {Gerald D. P. Dueck and Gordon V. Cormack},
4135 title = {Modular Attribute Grammars},
4136 journal = {The Computer Journal},
4137 month = apr,
4138 year = 1990,
4139 volume = 33,
4140 number = 2,
4141 pages = {164-172},
4142}
4143
4144@article{Yemini85,
4145 keywords = {exception handling},
4146 contributer = {pabuhr@plg},
4147 author = {Shaula Yemini and Daniel M. Berry},
4148 title = {A Modular Verifiable Exception-Handling Mechanism},
4149 journal = toplas,
4150 month = apr,
4151 year = 1985,
4152 volume = 7,
4153 number = 2,
4154 pages = {214-243},
4155}
4156
4157@article{Buhr95b,
4158 keywords = {concurrency, monitors, classification},
4159 contributer = {pabuhr@plg},
4160 author = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
4161 title = {Monitor Classification},
4162 journal = acmcs,
4163 volume = 27,
4164 number = 1,
4165 month = mar,
4166 year = 1995,
4167 pages = {63-107},
4168}
4169
4170@article{Hoare74,
4171 keywords = {monitor},
4172 contributer = {pabuhr@plg},
4173 author = {C. A. R. Hoare},
4174 title = {Monitors: An Operating System Structuring Concept},
4175 journal = cacm,
4176 volume = 17,
4177 number = 10,
4178 month = oct,
4179 year = 1974,
4180 pages = {549-557},
4181 annote = {
4182 }
4183}
4184
4185@inbook{Buhr99a,
4186 keywords = {concurrency, monitors, classification},
4187 contributer = {pabuhr@plg},
4188 author = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
4189 title = {Encyclopedia of Computer Science and Technology},
4190 chapter = {Monitor Taxonomy},
4191 publisher = {Marcel Dekker, Inc},
4192 volume = {40, supplement 25},
4193 year = 1999,
4194 pages = {191-212},
4195}
4196% editor = {Allen Kent and James G. Williams},
4197
4198@manual{MPI,
4199 keywords = {MPI},
4200 contributer = {pabuhr@plg},
4201 title = {MPI: A Message-Passing Interface Standard, Version 3.1},
4202 organization= {Message Passing Interface Forum},
4203 address = {University of Tennessee, Knoxville, Tennessee},
4204 month = jun,
4205 year = 2015,
4206 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}}},
4207}
4208
4209@article{multilisp,
4210 keywords = {futures, scheme},
4211 contributer = {gjditchfield@plg},
4212 author = {Halstead, Jr.,Robert H.},
4213 title = {Multilisp: A Language for Concurrent Symbolic Programming},
4214 journal = toplas,
4215 volume = 7,
4216 number = 4,
4217 pages = {501-538},
4218 month = oct,
4219 year = 1985,
4220 comment = {
4221 (future E) begins evaluating the expression E, and
4222 returns a ``future'' representing the value. When evaluation is
4223 finished, the value of E replaces the future. Operations that need
4224 the future's value suspend until it is available. Assignment and
4225 parameter passing do not suspend. Future introduces concurrency
4226 between the calculation of a value and its use; reference to
4227 futures is a synchronization mechanism.
4228
4229 (pcall F A B ... C) concurrently evaluates F, A, B, ... C, and then
4230 applies F to the arguments. pcall can be built from future and a
4231 ``touch'' operation. pcall is included because it may not be easy
4232 to determine that there are no critical sections between the future
4233 expression and the code between the future call and the value's
4234 first use.
4235
4236 (delay E) is like future, but E's process does not begin until its
4237 value is needed. It provides lazy evaluation. Replacing delay
4238 with future would launch an infinite number of processes.
4239 }
4240}
4241
4242@techreport{Bretthauer89,
4243 keywords = {multiple inheritance},
4244 contributer = {pabuhr@plg},
4245 author = {Harry Bretthauer and Thomas Christaller and J\"{u}rgen Kopp},
4246 title = {Multiple vs. Single Inheritance in Object-oriented Programming Languages. What do we really want?},
4247 institution = {Gesellschaft F\"{u}r Mathematik und Datenverarbeitung mbH},
4248 address = {Schlo$\beta$ Birlinghoven, Postfach 12 40, D-5205 Sankt Augustin 1, Deutschland},
4249 number = {Arbeitspapiere der GMD 415},
4250 month = nov,
4251 year = 1989,
4252}
4253
4254@inproceedings{c++:multinh,
4255 keywords = {C++, multiple inheritance, implementation},
4256 contributer = {gjditchfield@plg},
4257 author = {Bjarne Stroustrup},
4258 title = {Multiple Inheritance for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4259 booktitle = {Proceedings of the Spring '87 EUUG Conference},
4260 month = may, year = 1987
4261}
4262
4263@inproceedings{st:mult,
4264 keywords = {smalltalk, multiple inheritance, implementation},
4265 contributer = {gjditchfield@plg},
4266 author = {Daniel H. H. Ingalls and A. H. Borning},
4267 title = {Multiple Inheritance in Smalltalk-80},
4268 booktitle = {Proceedings of the National Conference on Artificial Intelligence},
4269 month = aug,
4270 year = 1982,
4271 pages = {234-238},
4272 organization= {American Association for Artificial Intelligence},
4273 comment = {
4274 Methods are looked up in the current class, the superclasses, the
4275 supersuperclasses, etc. The same method can be inherited
4276 repeatedly, but having different methods for the same message is an
4277 error. Only one copy is made for multiply-inherited fields.
4278
4279 {\tt X.m} is the method m in superclass X. {\tt super.m} is
4280 allowed if there is no ambiguity; {\tt self super.m} replaces {\tt
4281 super m}. {\tt all.m} invokes all inherited versions of m.
4282
4283 Methods on the first-superclass chain are found as usual. Methods
4284 from other superclasses are copied into the class dictionary. An
4285 error method is created if inherited methods conflict. The parser
4286 is changed to allow compound selectors. {\tt Object
4287 messageNotUnderstood} is changed to look for compound selectors and
4288 dynamically add a method with the right name and body to the class.
4289 When methods are edited, they are copied into subclasses and
4290 compound selector versions are deleted, as appropriate.
4291 }
4292}
4293
4294@article{Lamport86I,
4295 keywords = {software solutions, N-thread, mutual exclusions},
4296 contributer = {pabuhr@plg},
4297 author = {Leslie Lamport},
4298 title = {The Mutual Exclusion Problem: Part\,{I}--A Theory of Interprocess Communication},
4299 journal = jacm,
4300 volume = 33,
4301 number = 2,
4302 month = apr,
4303 year = 1986,
4304 pages = {313--326},
4305 numpages = {14},
4306 publisher = {ACM},
4307 address = {New York, NY, USA},
4308}
4309
4310@article{Lamport86II,
4311 keywords = {software solutions, N-thread, mutual exclusions},
4312 contributer = {pabuhr@plg},
4313 author = {Leslie Lamport},
4314 title = {The Mutual Exclusion Problem: Part\,{II}--Statement and Solutions},
4315 journal = jacm,
4316 volume = 33,
4317 number = 2,
4318 month = apr,
4319 year = 1986,
4320 pages = {327--348},
4321 numpages = {22},
4322 publisher = {ACM},
4323 address = {New York, NY, USA},
4324}
4325
4326@article{Burns78,
4327 keywords = {hardware, N-process solution, O(N)},
4328 contributer = {pabuhr@plg},
4329 author = {James E. Burns},
4330 title = {Mutual Exclusion with Linear Waiting Using Binary Shared Variables},
4331 journal = {SIGACT News},
4332 volume = 10,
4333 number = 2,
4334 month = {Summer},
4335 year = 1978,
4336 pages = {42-47},
4337}
4338
4339@inproceedings{Burns80,
4340 keywords = {N-process software solution},
4341 contributer = {pabuhr@plg},
4342 author = {James E. Burns and Nancy A. Lynch},
4343 title = {Mutual Exclusion using Indivisible Reads and Writes},
4344 booktitle = {Proceedings of the 18th Annual Allerton Conference on Communications, Control and Computing, Monticello, Illinois, USA},
4345 year = 1980,
4346 pages = {833-842},
4347 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]},
4348 optnote = {\textsf{http://\-groups.csail.mit.edu/\-tds/\-papers/\-Lynch/\-allertonconf.pdf}},
4349}
4350
4351@article{Peterson81,
4352 keywords = {concurrency, critical section},
4353 contributer = {pabuhr@plg},
4354 author = {G. L. Peterson},
4355 title = {Myths About the Mutual Exclusion Problem},
4356 journal = ipl,
4357 year = 1981,
4358 month = jun,
4359 volume = 12,
4360 number = 3,
4361 pages = {115-116},
4362}
4363
4364% N
4365
4366@article{Haddon77,
4367 keywords = {monitors, nested monitor calls},
4368 contributer = {pabuhr@plg},
4369 author = {Bruce K. Haddon},
4370 title = {Nested Monitor Calls},
4371 journal = osr,
4372 volume = 11,
4373 number = 4,
4374 month = oct,
4375 year = 1977,
4376 pages = {18-23},
4377}
4378
4379@inproceedings{nesting,
4380 keywords = {},
4381 contributer = {gjditchfield@plg},
4382 author = {Lori A. Clarke and Jack C. Wilenden and Alexander L. Wolf},
4383 title = {Nesting in {Ada} Programs is for the Birds},
4384 booktitle = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada}
4385 Programming Language},
4386 year = 1980,
4387 month = dec, pages = {139-145},
4388 note = {SIGPLAN Notices, v. 15, n. 11},
4389 abstract = {
4390 Given a data abstraction construct like the Ada package and in the
4391 light of current thoughts on programming methodology, we feel that
4392 nesting is an anachronism. In this paper we propose a nest-free
4393 program style for Ada that eschews nested program units and
4394 declarations within blocks and instead heavily utilizes packages
4395 and context specifications as mechanisms for controlling
4396 visibility. We view this proposal as a first step toward the
4397 development of programming methods that exploit the novel language
4398 features available in Ada. Consideration of this proposal's
4399 ramifications for data flow, control flow, and overall program
4400 structure substantiates our contention that a tree structure is
4401 seldom a natural representation of a program and that nesting
4402 therefore generally interferes with program development and
4403 readability.
4404 }
4405}
4406
4407@inproceedings{Buhr88,
4408 keywords = {nested classes, persistence},
4409 contributer = {pabuhr@plg},
4410 author = {P. A. Buhr and C. R. Zarnke},
4411 title = {Nesting in an Object Oriented Language is NOT for the Birds},
4412 booktitle = {Proceedings of the European Conference on Object Oriented Programming},
4413 publisher = {Springer},
4414 volume = 322,
4415 editor = {S. Gjessing and K. Nygaard},
4416 address = {Oslo, Norway},
4417 month = aug,
4418 year = 1988,
4419 pages = {128-145},
4420 note = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
4421}
4422
4423@inproceedings{Thompson90new,
4424 keywords = {Plan 9},
4425 contributer = {pabuhr@plg},
4426 title = {A New {C} Compiler},
4427 author = {Ken Thompson},
4428 booktitle = {Proceedings of the Summer 1990 UKUUG Conference},
4429 year = 1990,
4430 pages = {41--51},
4431 note = {\href{http://doc.cat-v.org/bell_labs/new_c_compilers/new_c_compiler.pdf}{http://\-doc.cat-v.org/\-bell\_labs/\-new\_c\_compilers/\-new\_c\_compiler.pdf}},
4432}
4433
4434@article{Trono94,
4435 author = {John A. Trono},
4436 title = {A New Exercise in Concurrency},
4437 journal = {SIGCSE Bulletin},
4438 volume = {26},
4439 number = {3},
4440 month = sep,
4441 year = {1994},
4442 pages = {8-10},
4443 publisher = {ACM},
4444 address = {New York, NY, USA},
4445}
4446
4447@article{Lamport74,
4448 keywords = {concurrency, N-Process solution, O(N)},
4449 contributer = {pabuhr@plg},
4450 author = {Leslie Lamport},
4451 title = {A New Solution of Dijkstra's Concurrent Programming Problem},
4452 journal = cacm,
4453 month = aug,
4454 year = 1974,
4455 volume = 17,
4456 number = 8,
4457 pages = {453-455},
4458}
4459
4460@article{landin,
4461 keywords = {},
4462 contributer = {gjditchfield@plg},
4463 author = {P. J. Landin},
4464 title = {The Next 700 Programing Languages},
4465 journal = cacm,
4466 year = 1966,
4467 volume = 9,
4468 pages = {157-164},
4469}
4470
4471@article{Herlihy05,
4472 keywords = {Multiprocessors, concurrent data structures, dynamic data structures, memory management, nonblocking synchronization},
4473 contributer = {pabuhr@plg},
4474 author = {Maurice Herlihy and Victor Luchangco and Paul Martin and Mark Moir},
4475 title = {Nonblocking Memory Management Support for Dynamic-sized Data Structures},
4476 journal = tocs,
4477 volume = 23,
4478 number = 2,
4479 month = may,
4480 year = 2005,
4481 pages = {146-196},
4482 numpages = {51},
4483 publisher = {ACM},
4484 address = {New York, NY, USA},
4485}
4486
4487% O
4488
4489@inproceedings{oop:abcl/1,
4490 keywords = {concurrency, OOPL, futures},
4491 contributer = {gjditchfield@plg},
4492 author = {Akinori Yonezawa and Jean-Pierre Briot and Etsuya Shibayama},
4493 title = {Object-Oriented Concurrent Programming in {ABCL/1}},
4494 crossref = "OOPSLA86",
4495 pages = {258-268},
4496 comment = {
4497 Actions for messages sent to an object are executed concurrently
4498 iff the object has no members. A select construct specifies a set
4499 of message patterns.
4500
4501 Express messages have priority. If an express message arrives
4502 while an ordinary message is being processed, the action for the
4503 ordinary message is suspended or aborted and the action for the
4504 express message is executed. The sender decides which class a
4505 message belongs in. Non-interruptible sections can be defined.
4506
4507 Message sends can be non-blocking, or can block until a reply is
4508 received, at the sender's option. The receiver can continue to
4509 execute after sending the reply.
4510
4511 Replies can send back ``futures'', and put values in them later.
4512 Futures are queues of values, not single values. The caller can
4513 use a ``ready?'' predicate to test for empty queue, or can use
4514 operations to get the first or all queue elements; these operations
4515 block if the queue is empty.
4516 }
4517}
4518
4519@techreport{Schmidt95,
4520 keywords = {ACE, concurrency, library},
4521 contributer = {pabuhr@plg},
4522 author = {Douglas C. Schmidt},
4523 title = {An OO Encapsulation of Lightweight OS Concurrency Mechanisms in the {ACE} Toolkit},
4524 institution = {Washington University in St. Louis},
4525 year = 1995,
4526 number = 31,
4527 note = {{\small\textsf{http://\-www.cs.wustl.edu/\-\char`\~schmidt/\-PDF/\-IPC\_SAP-92.pdf}}},
4528}
4529
4530@inproceedings{OOEx,
4531 keywords = {Exceptions, object-oriented programming languages},
4532 contributer = {gjditchfield@plg},
4533 author = {Christophe Dony},
4534 title = {An Object-oriented Exception Handling System for an Object-oriented Language},
4535 booktitle = {ECOOP '88. European Conference on Object-Oriented Programming},
4536 year = 1988,
4537 pages = {146-161},
4538 editor = {S. Gjessing and K. Nygaard},
4539 organization= {DND, The Norwegian Computer Society},
4540 publisher = {Springer},
4541 comment = {
4542 Objectives:
4543 - Users can define new exceptions.
4544 - Default handlers can be attached to exceptions.
4545 - Handlers can be attached to classes.
4546 - Handlers can be attached to dynamic entities (expressions).
4547 - Exceptions propagate first along the invocation chain.
4548 - Exceptions should be hierarchically organized classes.
4549 - Handlers should take into account the exception hierarchy (i.e.,
4550 should handle raising of sub-exceptions).
4551 The ``exceptional-event'' class has two subclasses. ``Warning''
4552 has a ``resume'' method, and ``error'' has ``exit'' and
4553 ``retry'' methods. Signalling an exception creates an instance
4554 of the exception, whose members are used to pass information
4555 back to the handler. Handlers are instances of class
4556 ``protect-handler'' with a method ``protect {\em expression}'',
4557 or are methods defined for the class or the exception.
4558 }
4559}
4560
4561@article{CommonObjects,
4562 author = {A. Snyder},
4563 title = {Object-Oriented Programming for Common Lisp},
4564 address = {Palo Alto CA},
4565 year = 1985,
4566 publisher = {Software Technology Laboratory, Hewlett-Packard Laboratories},
4567 journal = {Report ATC-85-1},
4568}
4569
4570@book{objective-c,
4571 keywords = {},
4572 author = {Brad J. Cox},
4573 title = {Object-oriented programming; an evolutionary approach},
4574 publisher = {Addison-Wesley},
4575 address = {Boston},
4576 year = 1986
4577}
4578
4579@manual{obj-c-book,
4580 keywords = {objective-c},
4581 contributor = {a3moss@uwaterloo.ca},
4582 author = {{Objective-C}},
4583 title = {The {Objective-C} Programming Language},
4584 organization= {Apple Computer Inc.},
4585 address = {Cupertino, CA},
4586 year = 2003
4587}
4588
4589@online{xcode7,
4590 keywords = {objective-c},
4591 contributor = {a3moss@uwaterloo.ca},
4592 author = {{Xcode}},
4593 title = {{Xcode} 7 Release Notes},
4594 year = 2015,
4595 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}},
4596 urldate = {2017-04-04}
4597}
4598
4599@book{Beta,
4600 keywords = {Beta, object oriented, concurrency, exceptions},
4601 contributer = {pabuhr@plg},
4602 author = {Ole Lehrmann Madsen and Birger M{\o}ller-Pedersen and Kristen Nygaard},
4603 title = {Object-oriented Programming in the {BETA} Programming Language},
4604 publisher = {Addison-Wesley},
4605 address = {Boston},
4606 year = 1993,
4607}
4608
4609@article{Flavors,
4610 author = {D. A. Moon},
4611 title = {Object-Oriented Programming with Flavors},
4612 address = {Portland OR},
4613 month = sep,
4614 year = 1986,
4615 journal = {Proc. ACM Conf. on Object-Oriented Systems, Languages and Applications},
4616}
4617
4618@article{Buhr00b,
4619 keywords = {concurrency, C++, real-time},
4620 contributer = {pabuhr@plg},
4621 author = {Peter A. Buhr and Ashif S. Harji and Philipp E. Lim and Jiongxiong Chen},
4622 title = {Object-Oriented Real-Time Concurrency},
4623 journal = sigplan,
4624 volume = 35,
4625 number = 10,
4626 month = oct,
4627 year = 2000,
4628 pages = {29-46},
4629 note = {OOPSLA'00, Oct. 15--19, 2000, Minneapolis, Minnesota, U.S.A.},
4630}
4631
4632@book{Meyer88,
4633 keywords = {Eiffel},
4634 contributer = {pabuhr@plg},
4635 author = {Bertrand Meyer},
4636 title = {Object-oriented Software Construction},
4637 publisher = {Prentice-Hall},
4638 address = {Englewood Cliffs},
4639 year = {1988},
4640 series = {Prentice-Hall International Series in Computer Science},
4641}
4642
4643@article{objectPascal,
4644 keywords = {objects, modules},
4645 contributer = {gjditchfield@plg},
4646 author = {Larry Tesler},
4647 title = {Object Pascal Report},
4648 journal = {Structured Language World},
4649 year = 1985,
4650 volume = 9,
4651 number = 3,
4652}
4653
4654@misc{obj-c:next,
4655 keywords = {categories, protocols, Objective C},
4656 contributor = {gjditchfield@angus},
4657 author = {NeXT Computer, Inc.},
4658 title = {Objective C Extensions},
4659 howpublished= {On-line documentation in ``NEXTSTEP 3.1 Developer''},
4660 year = 1993
4661}
4662
4663@book{Galletly96,
4664 keywords = {occam},
4665 author = {John Galletly},
4666 title = {{OCCAM} 2: Including {OCCAM} 2.1},
4667 publisher = {{UCL} (University College London) Press},
4668 address = {London},
4669 edition = {2nd},
4670 year = 1996,
4671}
4672
4673@techreport{Morrison88,
4674 keywords = {objects, concurrency, persistence},
4675 contributer = {pabuhr@plg},
4676 author = {R. Morrison and A. L. Brown and R. Carrick and R. Connor and A. Dearle},
4677 title = {On the integration of Object-Oriented and Process-Oriented computation in persistent environments},
4678 institution = {Department of Computational Science, University of St. Andrews, Scotland},
4679 number = {PPRR 57},
4680 month = jan,
4681 year = 1988,
4682}
4683
4684@article{Peterson73,
4685 keywords = {goto, structured programming},
4686 contributer = {pabuhr@plg},
4687 author = {W. W. Peterson and T. Kasami and N. Tokura},
4688 title = {On the Capabilities of While, Repeat, and Exit Statements},
4689 journal = cacm,
4690 month = aug,
4691 year = 1973,
4692 volume = 16,
4693 number = 8,
4694 pages = {503-512}
4695}
4696
4697@article{Baker82,
4698 keywords = {compilation},
4699 contributer = {gjditchfield@plg},
4700 author = {Theodore P. Baker},
4701 title = {A One-Pass Algorithm for Overload Resolution in {Ada}},
4702 journal = toplas,
4703 year = 1982,
4704 month = oct,
4705 volume = 4,
4706 number = 4,
4707 pages = {601-614},
4708 abstract = {
4709 A simple method is presented for detecting ambiguities and finding
4710 the correct interpretations of expressions in the programming
4711 language Ada. Unlike previously reported solutions to this
4712 problem, which require multiple passes over a tree structure, the
4713 method described here operates in one bottom-up pass, during which
4714 a directed acyclic graph is produced. The correctness of this
4715 approach is demonstrated by a brief formal argument.
4716 },
4717 comment = {
4718 See also \cite{D:overload}.
4719 }
4720}
4721
4722@techreport{OpenMP,
4723 keywords = {concurrency, openmp, spmd},
4724 contributer = {pabuhr@plg},
4725 author = {OpenMP Architecture Review Board},
4726 title = {OpenMP Application Program Interface, Version 4.0},
4727 month = jul,
4728 year = 2013,
4729 note = {\href{http://www.openmp.org/mp-documents/OpenMP4.0.0.pdf}{\textsf{http://\-www.openmp.org/\-mp-documents/\-OpenMP4.0.0.pdf}}},
4730}
4731
4732@book{Deitel04,
4733 keywords = {concurrency, operating systems},
4734 contributer = {pabuhr@plg},
4735 author = {Harvey M. Deitel and Paul J. Deitel and David R. Choffnes},
4736 title = {Operating Systems},
4737 publisher = {Pearson Prentice-Hall},
4738 address = {Englewood Cliffs},
4739 year = 2004,
4740 edition = {3rd},
4741}
4742
4743@book{Stalling98,
4744 keywords = {concurrency, operating systems},
4745 contributer = {pabuhr@plg},
4746 author = {William Stallings},
4747 title = {Operating Systems: Internals and Design Principles},
4748 publisher = {Prentice-Hall},
4749 address = {Englewood Cliffs},
4750 year = 1998,
4751 edition = {3rd},
4752}
4753
4754@book{Stalling01,
4755 keywords = {concurrency, operating systems},
4756 contributer = {pabuhr@plg},
4757 author = {William Stallings},
4758 title = {Operating Systems: Internals and Design Principles},
4759 publisher = {Prentice-Hall},
4760 address = {Englewood Cliffs},
4761 year = 2001,
4762 edition = {4th},
4763}
4764
4765@book{Silberschatz91,
4766 keywords = {concurrency, operating systems},
4767 contributer = {pabuhr@plg},
4768 author = {Abraham Silberschatz and James L. Peterson and Peter Galvin},
4769 title = {Operating System Concepts},
4770 publisher = {Addision-Wesley},
4771 address = {Boston},
4772 year = 1991,
4773 edition = {3rd},
4774}
4775
4776@book{Tanenbaum87,
4777 keywords = {concurrency, operating systems},
4778 contributer = {pabuhr@plg},
4779 author = {Andrew S. Tanenbaum},
4780 title = {Operating Systems : Design and Implementation},
4781 publisher = {Prentice-Hall},
4782 address = {Englewood Cliffs},
4783 series = {Software Series},
4784 year = 1987,
4785}
4786
4787@book{Hansen73,
4788 keywords = {monitors},
4789 contributer = {pabuhr@plg},
4790 author = {Per {Brinch Hansen}},
4791 title = {Operating System Principles},
4792 publisher = {Prentice-Hall},
4793 address = {Englewood Cliffs},
4794 year = 1973,
4795}
4796
4797@book{Bic03,
4798 keywords = {concurrency, operating systems},
4799 contributer = {pabuhr@plg},
4800 author = {Lubomir F. Bic and Alan C. Shaw},
4801 title = {Operating System Principles},
4802 publisher = {Prentice-Hall},
4803 address = {Englewood Cliffs},
4804 year = 2003,
4805}
4806
4807@techreport{milner88,
4808 keywords = {},
4809 contributer = {gjditchfield@plg},
4810 author = {Robin Milner},
4811 title = {Operational and Algebraic Semantics of Concurrent Processes},
4812 institution = {Laboratory for Foundations of Computer Science},
4813 year = 1988,
4814 address = {Department of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ},
4815 month = feb,
4816 number = {ECS-LFCS-88-46}
4817}
4818
4819@article{Ganzinger80,
4820 contributer = {a3moss@uwaterloo.ca},
4821 author = {Ganzinger, Harald and Ripken, Knut},
4822 title = {Operator Identification in {ADA}: Formal Specification, Complexity, and Concrete Implementation},
4823 journal = {SIGPLAN Notices},
4824 issue_date = {February 1980},
4825 volume = {15},
4826 number = {2},
4827 month = feb,
4828 year = {1980},
4829 issn = {0362-1340},
4830 pages = {30--42},
4831 numpages = {13},
4832 url = {http://doi.acm.org/10.1145/947586.947589},
4833 doi = {10.1145/947586.947589},
4834 publisher = {ACM},
4835 address = {New York, NY, USA}
4836}
4837
4838@article{Ford82,
4839 keywords = {},
4840 contributer = {pabuhr@plg},
4841 author = {G. Ford and B. Hansche},
4842 title = {Optional, Repeatable, and Varying Type Parameters},
4843 journal = sigplan,
4844 volume = 17,
4845 number = 2,
4846 month = feb,
4847 year = 1982,
4848 pages = {41-48},
4849}
4850
4851@manual{pli,
4852 keywords = {PL/I},
4853 contributer = {gjditchfield@plg},
4854 key = {IBM},
4855 title = {{OS} and {DOS} {PL/I} Reference Manual},
4856 organization= {International Business Machines},
4857 edition = {1st},
4858 month = sep,
4859 year = 1981,
4860 note = {Manual GC26-3977-0},
4861}
4862
4863@techreport{D:overload,
4864 keywords = {overload resolution, compilation},
4865 contributer = {gjditchfield@plg},
4866 author = {M. Dausmann et. al.},
4867 title = {Overloading in {Ada}},
4868 institution = {Universitat Karlsruhe},
4869 year = 1979,
4870 number = {23/79},
4871 comment = {
4872 Probably the earliest description of the two-pass (bottom-up,
4873 top-down) overload resolution algorithm. See also
4874 \cite{PW:overload,WS:overload,PDM:overload,Cor:overload,Bak:overload}.
4875 }
4876}
4877
4878@article{EB87,
4879 keywords = {packages, private types, assignment, equality},
4880 contributer = {gjditchfield@plg},
4881 author = {J. Dana Eckart and Richard J. LeBlanc},
4882 title = {Overloading in the {Ada} Language: Is it too restrictive?},
4883 journal = {Computer Languages},
4884 year = 1987,
4885 volume = 12,
4886 number = {3/4},
4887 pages = {163-172},
4888 abstract = {
4889 Packages in the Ada language provide a mechanism for extending the
4890 language through the development of additional data types. Such
4891 types can be better integrated into the language using operator
4892 overloading; however, key limitations prevent new types from being
4893 transparently integrated into the language. Allowing function
4894 names to overload private type names would give a cleaner and
4895 clearer mechanism for building values of these types. Furthermore,
4896 by allowing redefinitions of ``:='' and by making it easier to
4897 overload ``='' for private types, Ada coud be transformed into a
4898 more expressive language.
4899 }
4900}
4901
4902@article{PW:overload,
4903 keywords = {compilation},
4904 contributer = {gjditchfield@plg},
4905 author = {Guido Persch and Georg Winterstein and Manfred Dausman and Sophia Drossopoulou},
4906 title = {Overloading in Preliminary {Ada}},
4907 journal = sigplan,
4908 year = 1980,
4909 month = nov, volume = 15, number = 11, pages = {47-56},
4910 note = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada} Programming Language},
4911 comment = {
4912 The two-pass (bottom-up, then top-down) algorithm, with a proof
4913 that two passes suffice. See also \cite{D:overload}.
4914 }
4915}
4916
4917@article{SR,
4918 keywords = {concurrency, messages, rendezvous},
4919 contributer = {pabuhr@plg},
4920 author = {Gregory R. Andrews and Ronald A. Olsson and Michael Coffin and
4921 Irving Elshoff and Kelvin Nilsen and Titus Purdin and Gregg Townsend},
4922 title = {An Overview of the {SR} Language and Implementation},
4923 journal = toplas,
4924 month = jan,
4925 year = 1988,
4926 volume = 10,
4927 number = 1,
4928 pages = {51-86},
4929}
4930
4931% P
4932
4933@article{Andrews91,
4934 keywords = {general concurrency},
4935 contributer = {pabuhr@plg},
4936 author = {Gregory R. Andrews},
4937 title = {Paradigms for Process Interaction in Distributed Programs},
4938 journal = acmcs,
4939 volume = 23,
4940 number = 1,
4941 month = mar,
4942 year = 1991,
4943 pages = {49-90},
4944}
4945
4946@book{PPC++,
4947 keywords = {concurrency, parallel, distributed, C++},
4948 contributer = {pabuhr@plg},
4949 editor = {Gregory V. Wilson and Paul Lu},
4950 title = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4951 publisher = {MIT Press},
4952 series = {Scientific and Engineering Computation Series},
4953 year = 1996,
4954 pages = {1-42},
4955}
4956
4957@incollection{Stroustrup96,
4958 keywords = {concurrency, C++},
4959 contributer = {pabuhr@plg},
4960 author = {Bjarne Stroustrup},
4961 title = {A Perspective on Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4962 editor = {Gregory V. Wilson and Paul Lu},
4963 booktitle = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4964 publisher = {MIT Press},
4965 series = {Scientific and Engineering Computation Series},
4966 year = 1996,
4967 pages = {xxvi-xxvii},
4968}
4969
4970@incollection{Yang96b,
4971 keywords = {concurrency, C++},
4972 contributer = {pabuhr@plg},
4973 author = {Shelby X. Yang and Dennis Gannon and Peter Beckman and Jacob Gotwals and Neelakantan Sundaresan},
4974 editor = {Gregory V. Wilson and Paul Lu},
4975 title = {p{C}++},
4976 booktitle = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4977 publisher = {MIT Press},
4978 address = {Cambridge},
4979 series = {Scientific and Engineering Computation Series},
4980 pages = {507-546},
4981 year = 1996,
4982}
4983
4984@article{goguen84,
4985 keywords = {},
4986 contributer = {gjditchfield@plg},
4987 author = {Goseph A. Goguen},
4988 title = {Parameterized Programming},
4989 journal = ieeese,
4990 year = 1984,
4991 month = sep, volume = "SE-10", number = 5, pages = {528-543},
4992 abstract = {
4993 Parameterized programming is a powerful technique for the reliable
4994 reuse of software. In this technique, modules are parameterized
4995 over very general interfaces that describe what properties of an
4996 environment are required for the module to work correctly.
4997 Reusability is enhanced by the flexibility of the parameterization
4998 mechanism proposed here. Reliability is further enhanced by
4999 permitting interface requirements to include more than purely
5000 syntactic information. This paper introduces three new ideas that
5001 seem especially useful in supporting parameterized programming: 1)
5002 {\em theories}, which declare global properties of program modules
5003 and interfaces; 2) {\em views}, which connect theories with program
5004 modules in an elegant way; and 3) {\em module expressions}, a kind
5005 of general structured program transformation which produces new
5006 modules by modifying and combining existing modules. Although
5007 these ideas are illustrated with some simple examples in the OBJ
5008 programming language, they should also be taken as proposals for an
5009 Ada library system, for adding modules to Prolog, and as
5010 considerations for future language design efforts. OBJ is an
5011 ultra-high level programming language, based upon rewrite rules,
5012 that incorporates these ideas, and many others from modern
5013 programming methodology.
5014 }
5015}
5016
5017@inproceedings{c++:templates,
5018 author = {Bjarne Stroustrup},
5019 contributer = {gjditchfield@plg},
5020 title = {Parameterized Types for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5021 booktitle = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
5022 organization= {USENIX Association},
5023 year = 1988, pages = {1-18}
5024}
5025
5026@inproceedings{Boehm85,
5027 keywords = {second-order unification},
5028 contributer = {gjditchfield@plg},
5029 author = {Hans-J. Boehm},
5030 title = {Partial Polymorphic Type Inference is Undecidable},
5031 booktitle = {26th Annual Symposium on Foundations of Computer Science},
5032 year = 1985,
5033 pages = {339-345},
5034 organization= {IEEE Computer Society},
5035 publisher = {IEEE Computer Society Press},
5036 address = {1730 Massachusetts Avenue, N.W, Washington, D.C. 20036-1903},
5037 summary = {
5038 Given a base typed lambda calculus with function types, type
5039 abstractions, and a recursive expression \(\mbox{fix } x:t.e\),
5040 then type inference for the partially typed language
5041 \begin{eqnarray}
5042 \lambda x:\tau.e &\Rightarrow& \lambda x.e \\
5043 \mbox{fix } x:\tau.e &\Rightarrow& \mbox{fix } x.e \\
5044 e \tau &\Rightarrow& e ?
5045 \end{eqnarray}
5046 is undecidable.
5047 }
5048}
5049
5050@book{Pascal,
5051 keywords = {Pascal},
5052 contributer = {pabuhr@plg},
5053 author = {Kathleen Jensen and Niklaus Wirth},
5054 title = {{P}ascal User Manual and Report},
5055 publisher = {Springer--Verlag},
5056 year = 1985,
5057 edition = {3rd},
5058 note = {Revised by Andrew B. Mickel and James F. Miner, ISO Pascal Standard}
5059}
5060
5061@book{Pascal:old,
5062 keywords = {Pascal},
5063 contributer = {pabuhr@plg},
5064 author = {Kathleen Jensen and Niklaus Wirth},
5065 title = {{P}ascal User Manual and Report},
5066 publisher = {Springer--Verlag},
5067 year = 1975,
5068 edition = {1st},
5069}
5070
5071@article{Turba85,
5072 keywords = {Pascal, exception handling, inheritance},
5073 contributer = {pabuhr@plg},
5074 author = {Thomas N. Turba},
5075 title = {The {P}ascal Exception Handling Proposal},
5076 journal = sigplan,
5077 volume = 20,
5078 number = 8,
5079 month = aug,
5080 year = 1985,
5081 pages = {93-98},
5082}
5083
5084@manual{Pascal/VS,
5085 keywords = {PL/I},
5086 contributer = {pabuhr@plg},
5087 key = {IBM},
5088 title = {{P}ascal/{VS} Language Reference Manual},
5089 organization= {International Business Machines},
5090 edition = {1st},
5091 year = 1981,
5092 note = {Manual SH20-6168-1},
5093}
5094
5095@article{Anderson90,
5096 keywords = {spin locks, back off, performance},
5097 contributer = {pabuhr@plg},
5098 author = {Thomas E. Anderson},
5099 title = {The Performance of Spin Lock Alternatives for Shared-Memory Multiprocessors},
5100 journal = ieeepds,
5101 month = jan,
5102 year = 1990,
5103 volume = 1,
5104 number = 1,
5105 pages = {6-16},
5106}
5107
5108@article{poly,
5109 keywords = {Poly, Standard ML, Russell, persistence},
5110 contributer = {gjditchfield@plg},
5111 author = {David C. J. Matthews},
5112 title = {Poly Manual},
5113 journal = sigplan,
5114 month = sep, year = 1985,
5115 volume = 20, number = 9, pages = {52-76}
5116}
5117
5118@techreport{Atkinson87b,
5119 keywords = {naming, persistence},
5120 contributer = {pabuhr@plg},
5121 author = {M. P. Atkinson and R. Morrison},
5122 title = {Polymorphic Names and Iterations},
5123 institution = {Universities of Glasgow and St. Andrews, Scotland},
5124 number = {PPRR-53-87},
5125 month = nov,
5126 year = 1987,
5127}
5128
5129@book{Harland,
5130 keywords = {},
5131 author = {David M. Harland},
5132 title = {Polymorphic Programming Languages: Design and Implementation},
5133 publisher = {Ellis Horwood},
5134 year = 1984,
5135 series = {Computers and their Applications},
5136 address = {Market Cross House, Cooper Street, Chichester, West Sussex,
5137 PO19 1EB, England},
5138 summary = {
5139 The principles of Procedural Abstraction, Data Type Completeness,
5140 Declaration Correspondence, and Orthogonality are ruthlessly applied
5141 to the design of a polymorphic language.
5142 }
5143}
5144
5145@unpublished{poa,
5146 keywords = {Force N, type inference, reusability, transcendance},
5147 contributer = {gjditchfield@plg},
5148 author = {G. V. Cormack and A. K. Wright},
5149 title = {Polymorphism, Overloading, and Abstraction},
5150 note = {personal communication}
5151}
5152
5153@inproceedings{forceone:impl,
5154 keywords = {Parametric polymorphism, ForceOne},
5155 contributer = {gjditchfield@plg},
5156 author = {G. V. Cormack and A. K. Wright},
5157 title = {Polymorphism in the Compiled Language {ForceOne}},
5158 booktitle = {Proceedings of the 20th Hawaii International Conference on Systems Sciences},
5159 month = jan,
5160 year = 1987,
5161 pages = {284-292},
5162}
5163
5164@incollection{POOL-T,
5165 keywords = {objects, concurrency},
5166 contributer = {pabuhr@plg},
5167 author = {Pierre America},
5168 title = {POOL-T: A Parallel Object-Oriented Language},
5169 booktitle = {Object-Oriented Concurrent Programming},
5170 publisher = {The MIT Press},
5171 year = 1987,
5172 pages = {199-220},
5173 editor = {Akinori Yonezawa and Mario Tokoro}
5174}
5175
5176@article{Hardgrave76,
5177 keywords = {positional, keyword, parameters, arguments},
5178 contributer = {pabuhr@plg},
5179 author = {W. T. Hardgrave},
5180 title = {Positional versus Keyword Parameter Communication in Programming Languages},
5181 journal = sigplan,
5182 volume = 11,
5183 number = 5,
5184 month = may,
5185 year = 1976,
5186 pages = {52-58},
5187}
5188
5189@book{PowerPC,
5190 key = {PowerPC processor},
5191 title = {Programming Environments Manual for 32-Bit Implementations of the PowerPC ArchitectureARM Architecture},
5192 publisher = {Freescale Semiconductor},
5193 volume = {MPCFPE32B},
5194 edition = {Rev. 3},
5195 month = 9,
5196 year = 2005,
5197}
5198
5199@article{Ada:preliminary,
5200 keywords = {Ada},
5201 contributer = {pabuhr@plg},
5202 author = {Jean D. Ichbiah and Bernd Krieg-Brueckner and Brian A. Wichmann
5203 and Henry F. Ledgard and Jean-Claude Heliard and Jean-Raymond Abrial
5204 and John G. P. Barnes and Olivier Roubine},
5205 title = {Preliminary {Ada} Reference Manual},
5206 journal = sigplan,
5207 volume = 14,
5208 number = 6,
5209 month = jun,
5210 year = 1979,
5211 note = {Part A},
5212}
5213
5214@techreport{Forsythe,
5215 author = {John C. Reynolds},
5216 title = {Preliminary Design of the Programming Language {Forsythe}},
5217 institution = {Carnegie Mellon University},
5218 number = {CMU-CS-88-159},
5219 month = jun,
5220 year = 1988,
5221}
5222
5223@article{PRESTO,
5224 keywords = {concurrency, threads},
5225 contributer = {dgharriss@plg},
5226 author = {B. N. Bershad and E. D. Lazowska and H. M. Levy},
5227 title = {{PRESTO}: A System for Object-oriented Parallel Programming},
5228 journal = spe,
5229 volume = 18,
5230 number = 8,
5231 month = aug,
5232 year = 1988,
5233 pages = {713-732}
5234}
5235
5236@book{Ben-Ari82,
5237 keywords = {concurrency, parallel, programming languages},
5238 contributer = {pabuhr@plg},
5239 author = {Mordechai Ben-Ari},
5240 title = {Principles of Concurrent Programming},
5241 publisher = {Prentice-Hall International},
5242 address = {Englewood Cliffs},
5243 year = 1982,
5244}
5245
5246@book{Tennent81,
5247 author = {R. D. Tennent},
5248 title = {Principles of Programming Languages},
5249 publisher = {Prentice-Hall International},
5250 address = {Englewood Cliffs},
5251 year = 1981,
5252 series = {Series in Computer Science}
5253}
5254
5255@article{Lister77,
5256 keywords = {monitors, nested monitor calls},
5257 contributer = {pabuhr@plg},
5258 author = {Andrew Lister},
5259 title = {The Problem of Nested Monitor Calls},
5260 journal = osr,
5261 volume = 11,
5262 number = 3,
5263 month = jul,
5264 year = 1977,
5265 pages = {5-7},
5266}
5267
5268@article{psa:persistence,
5269 keywords = {persistence, first-class procedures, closure, PS-Algol,
5270 Abstract Data Types},
5271 contributer = {gjditchfield@plg},
5272 author = {Malcolm P. Atkinson and Ronald Morrison},
5273 title = {Procedures as Persistent Data Objects},
5274 journal = toplas,
5275 volume = {7}, number = {4},
5276 pages = {539-559},
5277 month = oct, year = 1985,
5278 comment = {
5279 PS-Algol has ``structures'', accessible only through ``pntrs''.
5280 Pntrs can refer to any type of structure. Field references involve
5281 a run-time check. This, plus first-class procedures, can simulate
5282 abstract data types. Procedure variables operating on pntrs
5283 simulate ADT operations. A block defines a structure to implement
5284 the ADT, and assigns procedures to the variables. Functions
5285 returning structures containing procedures simulate multiple
5286 implementations and parameterized ADTs.
5287
5288 An outer procedure that returns a procedure that contains
5289 (non-local) references to the outer procedure's parameters
5290 implements partial evaluation.
5291
5292 Modules can be simulated like ADT's. The module itself is a
5293 structure instance that is placed in persistent storage, and the
5294 module is imported by fetching it from the persistent store.
5295 Multiple instances of modules are easy. Installation of new
5296 versions can be done by replacing the version in the database.
5297 }
5298}
5299
5300@article{Procol89,
5301 keywords = {active objects, object-oriented languages,
5302 object-based languages, explicit per-object protocol},
5303 contributer = {akgoel@plg},
5304 author = {Jan van den Bos and Chris Laffra},
5305 title = {PROCOL: A Parallel Object Language with Protocols},
5306 journal = sigplan,
5307 volume = 24,
5308 number = 10,
5309 month = oct,
5310 year = 1989,
5311 pages = {95-102},
5312 note = {Proceedings of the OOPSLA'89 Conference, Oct. 1--6, 1989, New Orleans, Lousiana},
5313 abstract = {},
5314}
5315
5316@book{Butenhof97,
5317 keywords = {PThreads, concurrency},
5318 contributer = {pabuhr@plg},
5319 author = {David R. Butenhof},
5320 title = {Programming with {POSIX} Threads},
5321 publisher = {Addison-Wesley},
5322 address = {Boston},
5323 series = {Professional Computing},
5324 year = 1997,
5325}
5326
5327@book{SETL,
5328 keywords = {SETL},
5329 contributer = {pabuhr@plg},
5330 author = {J. T. Schwartz and R. B. K. Dewar and E. Dubinsky and E. Schonberg},
5331 title = {Programming with Sets: An Introduction to {SETL}},
5332 publisher = {Springer},
5333 address = {New York, NY, USA},
5334 year = 1986,
5335}
5336
5337@book{Genuys68,
5338 keywords = {contains Dijkstra's Cooperating Sequential Processes},
5339 contributer = {pabuhr@plg},
5340 editor = {F. Genuys},
5341 title = {Programming Languages},
5342 publisher = {Academic Press},
5343 address = {London, New York},
5344 year = 1968,
5345 note = {NATO Advanced Study Institute, Villard-de-Lans, 1966}
5346}
5347
5348@manual{ANSI99:C,
5349 keywords = {ANSI C 99},
5350 contributer = {pabuhr@plg},
5351 title = {Programming Languages -- {C}},
5352 organization= {International Standard ISO/IEC 9899:1999 (E)},
5353 publisher = {American National Standards Institute},
5354 address = {www.ansi.org},
5355 year = 1999,
5356}
5357
5358@manual{ANSI98:C++,
5359 keywords = {ANSI C++ 98},
5360 contributer = {pabuhr@plg},
5361 key = {C++98},
5362 title = {Programming Languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5363 organization= {International Standard ISO/IEC 14882:1998 (E)},
5364 publisher = {American National Standards Institute},
5365 address = {www.ansi.org},
5366 year = 1998,
5367}
5368
5369@manual{C++14,
5370 keywords = {ISO/IEC C++ 14},
5371 contributer = {pabuhr@plg},
5372 author = {C++14},
5373 title = {Programming Languages -- {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} ISO/IEC 14882:2014},
5374 edition = {4th},
5375 publisher = {International Standard Organization},
5376 address = {\href{https://www.iso.org/standard/64029.html}{https://\-www.iso.org/\-standard/\-64029.html}},
5377 year = 2014,
5378}
5379
5380@manual{MS:VisualC++,
5381 keywords = {Microsoft Visual C++},
5382 contributer = {pabuhr@plg},
5383 title = {Microsoft Visual {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} .NET Language Reference},
5384 organization= {Microsoft Corporation},
5385 year = 2002,
5386 note = {Microsoft Press, Redmond, Washington, U.S.A.},
5387}
5388
5389@article{HasselBring00,
5390 keywords = {concurrency, prototyping},
5391 contributer = {pabuhr@plg},
5392 author = {Wilhelm Hasselbring},
5393 title = {Programming Languages and Systems for Prototyping Concurrent Applications},
5394 journal = acmcs,
5395 volume = 32,
5396 number = 1,
5397 month = mar,
5398 year = 2000,
5399 pages = {43-79},
5400}
5401
5402@article{LLgen,
5403 keywords = {ll(1), parser generator, separate compilation},
5404 contributer = {gjditchfield@plg},
5405 author = {Dick Grune and Ceriel J. J. Jacobs},
5406 title = {A Programmer-friendly LL(1) Parser Generator},
5407 journal = spe,
5408 month = jan, year = 1988,
5409 volume = 18, number = 1, pages = {29-33},
5410 comment = {
5411 LLgen generates C-language recursive-descent parsers. The input
5412 contains procedure-like rules with alternation and repetition
5413 constructs on the right, and (typed) parameters on the left.
5414 C actions are specified between items in the right side.
5415 Alternation and repetition (reduce and shift) conflicts can be
5416 resolved statically or at run time.
5417
5418 A grammar can be specified in several files. All files must be
5419 submitted to LLgen at once, but if the C file generated is no
5420 different from the old version, then the old version is not
5421 replaced and hence need not be recompiled, which saves lots of
5422 time.
5423
5424 When an incorrect token is found, the automatic error recovery
5425 algorithm discards tokens until an ``acceptable'' token is found;
5426 if the acceptable token is not correct, a correct one is inserted.
5427 }
5428}
5429
5430@techreport{russell,
5431 keywords = {Russell},
5432 contributer = {gjditchfield@plg},
5433 author = {H. Boehm and A. Demers and J. Donahue},
5434 title = {A Programmer's Introduction to Russell},
5435 institution = {Rice University},
5436 year = 1985,
5437 number = {85-16}
5438}
5439
5440@techreport{PDM89,
5441 keywords = {existential types, universal types},
5442 contributer = {gjditchfield@plg},
5443 author = {Benjamin Pierce and Scott Dietzen and Spiro Michaylov},
5444 title = {Programming in Higher-Order Typed Lambda Calculi},
5445 institution = {School of Computer Science, Carnegie Mellon University},
5446 year = 1989,
5447 address = {Pittsburg, PA 15213-3890},
5448 month = mar, number = {CMU-CS-89-111},
5449 abstract = {
5450 This tutorial presents a hierarchy of increasingly powerful
5451 languages, beginning with Church's simply typed
5452 \(\lambda\)-calculus (\(F_1\)) and the second-order polymorphic
5453 \(\lambda\)-calculus of Girard and Reynolds, and culminating in a
5454 fragment of Girard's \(\omega\)-order polymorphic
5455 \(\lambda\)-calculus (\(F_\omega\)). Our focus throughout is on
5456 the unusual style of programming that arises in these languages,
5457 where all functions are total and the primary control construct is
5458 iteration rather than general recursion.
5459 }
5460}
5461
5462@book{Modula-2,
5463 keywords = {modules, coroutines},
5464 contributer = {pabuhr},
5465 author = {Niklaus Wirth},
5466 title = {Programming in Modula-2},
5467 publisher = {Springer},
5468 address = {New York},
5469 year = 1988,
5470 edition = {4th},
5471 series = {Texts and Monographs in Computer Science},
5472}
5473
5474@manual{Ada,
5475 keywords = {Ada, packages, tasks, exceptions},
5476 contributer = {pabuhr@plg},
5477 title = {The Programming Language {Ada}: Reference Manual},
5478 author = {Ada},
5479 organization= {United States Department of Defense},
5480 edition = {{ANSI/MIL-STD-1815A-1983}},
5481 month = feb,
5482 year = 1983,
5483 note = {Springer, New York},
5484}
5485
5486@manual{ada:old,
5487 keywords = {Ada, packages, tasks, exceptions},
5488 contributer = {gjditchfield@plg},
5489 title = {The Programming Language {Ada}: Reference Manual},
5490 organization= {United States Department of Defense},
5491 publisher = {Springer},
5492 year = 1981
5493}
5494
5495@book{Ghezzi,
5496 keywords = {},
5497 author = {Carlo Ghezzi and Mehdi Jazayeri},
5498 title = {Programming Language Concepts},
5499 publisher = {Wiley},
5500 year = 1982
5501}
5502
5503@article{ConcurrentPascal,
5504 keywords = {Concurrent Pascal},
5505 contributer = {pabuhr@plg},
5506 author = {Per {Brinch Hansen}},
5507 title = {The Programming Language Concurrent Pascal},
5508 journal = ieeese,
5509 volume = 2,
5510 month = jun,
5511 year = 1975,
5512 pages = {199-206}
5513}
5514
5515@phdthesis{Buhr85:thesis,
5516 keywords = {},
5517 contributer = {pabuhr@plg},
5518 author = {P. A. Buhr},
5519 title = {A Programming System},
5520 school = {University of Manitoba},
5521 year = {1985}
5522}
5523
5524@techreport{pierce91,
5525 keywords = {typed lambda calculus},
5526 contributer = {gjditchfield@plg},
5527 author = {Benjamin C. Pierce},
5528 title = {Programming with Intersection Types, Union Types, and Polymorphism},
5529 institution = {Carnegie Mellon University},
5530 year = 1991,
5531 month = feb, number = "CMU-CS-91-106",
5532 annote = {
5533 Discusses a typed lambda calculus with
5534 \begin{itemize}
5535 \item
5536 Intersection types \(\tau = \tau_1\wedge\tau_2\) with \(\tau \le
5537 \tau_i\) for all \(i\).
5538 \item
5539 Union types \(\tau = \tau_1\vee\tau_2\) with \(\tau_i \le \tau\),
5540 and with implicit coercions from \(tau_i\) to \(\tau\). Only
5541 operations valid for both element types can be applied to the
5542 union; there are no projections. Union types are to variant
5543 records as set union is to disjoint set union.
5544 \item
5545 Function types and universal quantification, with subtyping rules.
5546 When functions and arguments intersections, the result of
5547 application is the intersection of all valid combinations.
5548 \item
5549 Distribution rules for combinations of types.
5550 \item
5551 "Union elimination": "case \(x = e\) of \(e'\)", where \(e\) is a
5552 union, has type \(\tau\) if \(e'\) has that type with \(x\) having
5553 every element type of the union.
5554 \item
5555 "Finitary quantification": "for \(t\) in \(\tau_1,\ldots,\tau_n.e\)"
5556 typechecks \(e\) with \(t\) bound to each choice, and intersects
5557 the results.
5558 \end{itemize}
5559
5560 Examples include: type of "natural" numbers, treated as a union of
5561 "zero" and "positive" types; default parameters, faked by using an
5562 argument that is an intersection of a data type and a function
5563 taking an explicit argument.
5564
5565 Unions can be mostly faked, according to Mitchell:
5566 \[\tau_1\vee\tau_2 \equiv
5567 \forall\tau.(\tau_1\on\tau)\wedge(\tau_2\on\tau)\]
5568 }
5569}
5570
5571@article{promises,
5572 keywords = {futures, Argus, call streams, rpc},
5573 contributer = {gjditchfield@plg},
5574 author = {Barbara Liskov and Liuba Shrira},
5575 title = {Promises: Linguistic Support for Efficient Asynchronous
5576 Procedure Calls in Distributed Systems},
5577 journal = sigplan,
5578 year = 1988,
5579 month = jul, volume = 23, number = 7, pages = {260-267},
5580 note = {Proceedings of the SIGPLAN '88 Conference on Programming Language
5581 Design and Implementation},
5582 abstract = {
5583 This paper deals with the integration of an efficient asynchronous
5584 remote procedure call mechanism into a programming language. It
5585 describes a new data type called a {\em promise} that was designed
5586 to support asynchronous calls. Promises allow a caller to run in
5587 parallel with a call and to pick up the results of the call,
5588 including any exceptions it raises, in a convenient and type-safe
5589 manner. The paper also discusses efficient composition of
5590 sequences of asynchronous calls to different locations in a
5591 network.
5592 }
5593}
5594
5595@article{Cook89,
5596 keywords = {},
5597 contributer = {gjditchfield@plg},
5598 author = {W. R. Cook},
5599 title = {A Proposal for Making {Eiffel} Type-safe},
5600 journal = {The Computer Journal},
5601 year = 1989,
5602 volume = 32, number = 4, pages = {305-311},
5603 abstract = {
5604
5605 }
5606}
5607
5608@inproceedings{Foxall79,
5609 keywords = {},
5610 contributer = {pabuhr@plg},
5611 author = {D. G. Foxall and M. L. Joliat and R. F. Kamel and J. J. Miceli},
5612 title = {{PROTEL}: A High Level Language for Telephony},
5613 booktitle = {Proceedings 3rd International Computer Software and Applications Conference},
5614 month = nov,
5615 year = 1979,
5616 pages = {193-197},
5617}
5618
5619@techreport{PS-Algol,
5620 keywords = {algol, persistence},
5621 contributer = {pabuhr@plg},
5622 key = {PS-Algol},
5623 title = {The {PS-Algol} Reference Manual, 4th Ed.},
5624 author = {},
5625 institution = {University of Glasgow and St. Andrews, Scotland},
5626 number = {PPRR 12},
5627 month = jun,
5628 year = 1987,
5629}
5630
5631@manual{Python,
5632 keywords = {Python},
5633 contributer = {pabuhr},
5634 title = {Python Reference Manual, Release 2.5},
5635 author = {Guido van Rossum},
5636 organization= {Python Software Foundation},
5637 month = sep,
5638 year = 2006,
5639 note = {Fred L. Drake, Jr., editor},
5640}
5641
5642% Q
5643
5644@article{Grossman06,
5645 keywords = {Cyclone, existential types, polymorphism, type variables},
5646 contributer = {a3moss@plg},
5647 author = {Dan Grossman},
5648 title = {Quantified Types in an Imperative Language},
5649 journal = toplas,
5650 issue_date = {May 2006},
5651 volume = {28},
5652 number = {3},
5653 month = may,
5654 year = 2006,
5655 issn = {0164-0925},
5656 pages = {429-475},
5657 url = {http://doi.acm.org.proxy.lib.uwaterloo.ca/10.1145/1133651.1133653},
5658 doi = {10.1145/1133651.1133653},
5659 acmid = {1133653},
5660 publisher = {ACM},
5661 address = {New York, NY, USA},
5662}
5663
5664@article{Hoare61,
5665 keywords = {quick sort},
5666 contributer = {pabuhr@plg},
5667 author = {C. A. R. Hoare},
5668 title = {Algorithms 63/64: Partition/Quicksort},
5669 journal = cacm,
5670 volume = 4,
5671 number = 7,
5672 month = jul,
5673 year = 1961,
5674 pages = {321},
5675}
5676
5677% R
5678
5679@article{Ada:rationale:preliminary,
5680 keywords = {Ada},
5681 contributer = {pabuhr@plg},
5682 author = {J. D. Ichbiah and J. C. Heliard and O. Roubine and
5683 J. G. P. Barnes and B. Krieg-Brueckner and B. A. Wichmann},
5684 title = {Rationale for the Design of the {ADA} Programming Language},
5685 journal = sigplan,
5686 volume = 14,
5687 number = 6,
5688 month = jun,
5689 year = 1979,
5690 note = {Part B},
5691}
5692
5693@book{Ada:rationale,
5694 keywords = {Ada},
5695 contributer = {pabuhr@plg},
5696 author = {Jean D. Ichbiah and John G. P. Barnes and Robert J. Firth and Mike Woodger},
5697 title = {Rationale for the Design of the {ADA} Programming Language},
5698 publisher = {Under Secretary of Defense, Research and Engineering},
5699 year = 1986,
5700 address = {Ada Joint Program Office, OUSDRE(R\&AT), The Pentagon, Washington, D. C., 20301, U.S.A.},
5701}
5702
5703@manual{Ada95,
5704 keywords = {Ada},
5705 contributer = {pabuhr@plg},
5706 title = {{A}da Reference Manual},
5707 edition = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
5708 organization= {Intermetrics, Inc.},
5709 month = dec,
5710 year = 1995,
5711 note = {Language and Standards Libraries}
5712}
5713
5714@manual{Ada12,
5715 keywords = {ISO/IEC Ada},
5716 contributer = {pabuhr@plg},
5717 author = {Ada12},
5718 title = {Programming languages -- {Ada} ISO/IEC 8652:2012},
5719 edition = {3rd},
5720 publisher = {International Standard Organization},
5721 address = {\href{https://www.iso.org/standard/61507.html}{https://\-www.iso.org/\-standard/\-61507.html}},
5722 year = 2012,
5723}
5724
5725@manual{Ada95:annotated,
5726 keywords = {Ada},
5727 contributer = {pabuhr@plg},
5728 title = {Annotated {A}da Reference Manual},
5729 edition = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
5730 organization = {Intermetrics, Inc.},
5731 month = dec,
5732 year = 1995,
5733 note = {Language and Standards Libraries}
5734}
5735
5736@book{JavaRT00,
5737 keywords = {real time, draft},
5738 contributer = {pabuhr@plg},
5739 author = {Greg Bollella and Ben Brosgol and Peter Dibble and Steve Furr and James Gosling and David Hardin and Mark Turnbull},
5740 title = {The Real-Time Specification for {J}ava},
5741 series = {The Real-Time for Java Expert Group, {\small\textsf{http://\-www.rtj.org}}},
5742 publisher = {Addison-Wesley},
5743 address = {Boston},
5744 year = 2000,
5745}
5746
5747@manual{JavaRT99,
5748 organization= {Real Time for Java Experts Group},
5749 address = {{\small\textsf{http://\-www.rtj.org}}},
5750 month = sep,
5751 year = 1999,
5752}
5753
5754@article{Robinson48,
5755 keywords = {recursion, Ackermann function},
5756 contributer = {pabuhr@plg},
5757 author = {Raphael Mitchel Robinson},
5758 title = {Recursion and Double Recursion},
5759 publisher = {American Mathematical Society},
5760 journal = {Bulletin of the American Mathematical Society},
5761 volume = 54,
5762 pages = {987-993},
5763 year = 1948,
5764}
5765
5766@article{Dijkstra:red,
5767 keywords = {ada},
5768 contributer = {gjditchfield@plg},
5769 author = {Edsger W. Dijkstra},
5770 title = {On the RED Language submitted to the DoD},
5771 journal = sigplan,
5772 year = 1978,
5773 month = oct,
5774 volume = 13,
5775 number = 10,
5776 pages = {27-32},
5777}
5778
5779@article{RemoteRendezvous,
5780 keywords = {rendezvous, concurrency},
5781 contributer = {pabuhr@plg},
5782 author = {N. D. Gammage and R. F. Kamel and L. M. Casey},
5783 title = {Remote Rendezvous},
5784 journal = spe,
5785 month = oct,
5786 year = 1987,
5787 volume = 17,
5788 number = 10,
5789 pages = {741-755}
5790}
5791
5792@article{Euclid,
5793 keywords = {Euclid},
5794 contributer = {pabuhr@plg},
5795 author = {B. W. Lampson and J. J. Horning and R. L. London and J. G. Mitchell and G. L. Popek},
5796 title = {Report on the Programming Language Euclid},
5797 journal = sigplan,
5798 volume = 12,
5799 number = 2,
5800 month = feb,
5801 year = 1977,
5802 pages = {1-79}
5803}
5804
5805@techreport{LOGLAN88,
5806 keywords = {LOGLAN},
5807 contributer = {pabuhr@plg},
5808 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},
5809 title = {Report on the Programming Language LOGLAN'88},
5810 institution = {Institute of Informatics, University of Warsaw},
5811 address = {Pkin 8th Floor, 00-901 Warsaw, Poland},
5812 number = {},
5813 month = dec,
5814 year = 1988,
5815}
5816
5817@mastersthesis{Schluntz17,
5818 author = {Robert Schluntz},
5819 title = {Resource Management and Tuples in C$\mathbf{\forall}$},
5820 school = {School of Computer Science, University of Waterloo},
5821 year = 2017,
5822 address = {Waterloo, Ontario, Canada, N2L 3G1},
5823 note = {[[unpublished]]}
5824}
5825
5826@article{FH91,
5827 keywords = {lcc},
5828 contributer = {gjditchfield@plg},
5829 author = {Christopher W. Fraser and David R. Hanson},
5830 title = {A Retargetable Compiler for {ANSI} {C}},
5831 journal = sigplan,
5832 year = 1991,
5833 month = oct, volume = 26, number = 10, pages = {29-43},
5834 abstract = {
5835 {\tt lcc} is a new retargetable compiler for ANSI C. Versions for
5836 the VAX, Motorola 68020, SPARC, and MIPS are in production use at
5837 Princeton University and at AT\&T Bell Laboratories. With a few
5838 exceptions, little about {\tt lcc} is unusual---it integrates
5839 several well engineered, existing techniques---but it is smaller
5840 and faster than most other C compilers, and it generates code of
5841 comparable quality. {\tt lcc}'s target-independent front end
5842 performs a few simple, but effective, optimizations that contribute
5843 to good code; examples include simulating register declarations and
5844 partitioning switch statements into dense tables. It also
5845 implements target-independent function tracing and expression-level
5846 profiling.
5847 }
5848}
5849
5850@article{Algol68revised,
5851 keywords = {},
5852 contributer = {gjditchfield@plg},
5853 author = {A. van Wijngaarden and B. J. Mailloux and J. E. L. Peck and
5854 C. H. A. Koster and M. Sintzoff and C. H. Lindsey and L. G. L. T.
5855 Meertens and R. G. Fisher},
5856 title = {Revised Report on the Algorithmic Language {ALGOL} 68},
5857 journal = sigplan,
5858 year = 1977,
5859 month = may,
5860 volume = 12,
5861 number = 5,
5862 pages = {1-70}
5863}
5864
5865@article{scheme,
5866 keywords = {},
5867 contributer = {gjditchfield@plg},
5868 author = {Jonathan Rees and William Clinger},
5869 title = {Revised$^3$ Report on the Algorithmic Language {S}cheme},
5870 journal = sigplan,
5871 year = 1986,
5872 month = dec,
5873 volume = 21,
5874 number = 12,
5875 pages = {37-79},
5876}
5877
5878@article{scheme5,
5879 keywords = {scheme},
5880 contributer = {pabuhr@plg},
5881 author = {H. Abelson and Adams, IV, N. I. and D. H. Bartley and G. Brooks and R. K. Dybvig and D. P. Friedman and
5882 R. Halstead and C. Hanson and C. T. Haynes and E. Kohlbecker and D. Oxley and K. M. Pitman and G. J. Rozas and
5883 G. L. Steele Jr. and G. J. Sussman and M. Wand and \emph{Ed. by} Richard Kelsey and William Clinger and Jonathan Rees},
5884 title = {Revised$^5$ Report on the Algorithmic Language {S}cheme},
5885 journal = sigplan,
5886 year = 1998,
5887 month = sep,
5888 volume = 33,
5889 number = 9,
5890 pages = {26-76},
5891}
5892
5893@manual{Rust,
5894 keywords = {Rust programming language},
5895 contributer = {pabuhr@plg},
5896 author = {{Rust}},
5897 title = {The {Rust} Programming Language},
5898 organization= {The Rust Project Developers},
5899 year = 2015,
5900 note = {\href{https://doc.rust-lang.org/reference.html}{https://\-doc.rust-lang\-.org/\-reference.html}},
5901}
5902
5903% S
5904
5905@manual{Scala,
5906 keywords = {Scala programming language},
5907 contributer = {pabuhr@plg},
5908 author = {{Scala}},
5909 title = {{Scala} Language Specification, Version 2.11},
5910 organization= {\'{E}cole Polytechnique F\'{e}d\'{e}rale de Lausanne},
5911 year = 2016,
5912 note = {\href{http://www.scala-lang.org/files/archive/spec/2.11}{http://\-www.scala-lang.org/\-files/\-archive/\-spec/\-2.11}},
5913}
5914
5915@inproceedings{Michael04,
5916 keywords = {lock free, dynamic memory allocation},
5917 contributer = {pabuhr@plg},
5918 author = {Maged M. Michael},
5919 title = {Scalable Lock-free Dynamic Memory Allocation},
5920 booktitle = {PLDI '04: Proceedings of the ACM SIGPLAN 2004 Conference on Programming Language Design and Implementation},
5921 location = {Washington DC, USA},
5922 publisher = {ACM},
5923 address = {New York, NY, USA},
5924 volume = 39,
5925 year = 2004,
5926 month = jun,
5927 pages = {35-46},
5928}
5929
5930@article{Anderson92,
5931 keywords = {light-weight tasks},
5932 contributer = {pabuhr@plg},
5933 author = {Thomas E. Anderson and Brian N. Bershad and Edward D. Lazowska and Henry M. Levy},
5934 title = {Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism},
5935 journal = tocs,
5936 volume = 10,
5937 number = 1,
5938 month = feb,
5939 year = 1992,
5940 pages = {53-79},
5941}
5942
5943@manual{SELF,
5944 keywords = {programming language, obect-oriented, polymorphism},
5945 contributer = {pabuhr@plg},
5946 author = {Ole Agesen and Lars Bak and Craig Chambers and Bay-Wei Chang and Urs H{\o}lzle
5947 and John H. Maloney and Randall B. Smith and David Ungar and Mario Wolczko},
5948 title = {The {SELF} 3.0 Programmer's Reference Manual},
5949 organization= {Sun Microsystems, Inc., and Stanford University},
5950 year = 1993,
5951}
5952
5953@inproceedings{Cardelli84,
5954 keywords = {subtypes, recursive types, records, variants, object oriented},
5955 contributer = {gjditchfield@plg},
5956 author = {Luca Cardelli},
5957 title = {A Semantics of Multiple Inheritance},
5958 booktitle = {Semantics of Data Types},
5959 year = 1984,
5960 pages = {51-67},
5961 editor = {G. Kahn and D. B. MacQueen and G. D. Plotkin},
5962 publisher = {Springer},
5963 note = {Lecture Notes in Computer Science v. 173},
5964}
5965
5966@techreport{Adve95,
5967 keywords = {shared memory, consistency models},
5968 contributer = {pabuhr@plg},
5969 author = {Sarita V. Adve and Kourosh Gharachorloo},
5970 title = {Shared Memory Consistency Models: A Tutorial},
5971 institution = {Western Research Laboratory},
5972 address = {250 University Avenue, Palo Alto, California, 94301, U.S.A.},
5973 number = {7},
5974 month = sep,
5975 year = 1995,
5976 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}.},
5977}
5978
5979@article{Adve95reprint,
5980 keywords = {shared memory, consistency models},
5981 contributer = {pabuhr@plg},
5982 author = {Sarita V. Adve and Kourosh Gharachorloo},
5983 journal = {Computer},
5984 title = {Shared Memory Consistency Models: A Tutorial},
5985 month = dec,
5986 year = 1996,
5987 volume = 29,
5988 number = 12,
5989 pages = {66-76},
5990}
5991
5992@inproceedings{Howard76b,
5993 keywords = {monitors},
5994 contributer = {pabuhr@plg},
5995 author = {J. H. Howard},
5996 title = {Signaling in Monitors},
5997 booktitle = {Proceedings Second International Conference Software Engineering},
5998 address = {San Francisco, U.S.A},
5999 publisher = {IEEE Computer Society},
6000 month = oct,
6001 year = 1976,
6002 pages = {47-52}
6003}
6004
6005@techreport{Schemenauer01,
6006 keywords = {Phthon, generator, coroutine},
6007 contributer = {pabuhr@plg},
6008 author = {Neil Schemenauer and Tim Peters and Magnus Lie Hetland},
6009 title = {Simple Generators},
6010 month = may,
6011 year = 2001,
6012 note = {\href{http://www.python.org/peps/pep-0255.html}{http://\-www.python.org/\-peps/\-pep-0255.html}},
6013}
6014
6015@inproceedings{Michael96,
6016 keywords = {compare_and_swap, concurrent queue, lock-free, multiprogramming, non-blocking},
6017 contributer = {pabuhr@plg},
6018 author = {Maged M. Michael and Michael L. Scott},
6019 title = {Simple, Fast, and Practical Non-blocking and Blocking Concurrent Queue Algorithms},
6020 booktitle = {Proceedings of the Fifteenth Annual ACM Symposium on Principles of Distributed Computing},
6021 series = {PODC'96},
6022 year = 1996,
6023 location = {Philadelphia, Pennsylvania, USA},
6024 pages = {267--275},
6025 numpages = {9},
6026 publisher = {ACM},
6027 address = {New York, NY, USA},
6028}
6029
6030@article{Pennello80,
6031 contributer = {a3moss@uwaterloo.ca},
6032 author = {Pennello, Tom and DeRemer, Frank and Meyers, Richard},
6033 title = {A Simplified Operator Identification Scheme for {Ada}},
6034 journal = {SIGPLAN Notices},
6035 issue_date = {July-August 1980},
6036 volume = {15},
6037 number = {7 and 8},
6038 month = jul,
6039 year = {1980},
6040 issn = {0362-1340},
6041 pages = {82--87},
6042 numpages = {6},
6043 url = {http://doi.acm.org/10.1145/947680.947688},
6044 doi = {10.1145/947680.947688},
6045 publisher = {ACM},
6046 address = {New York, NY, USA},
6047}
6048
6049@inproceedings{Dice10,
6050 keywords = {hardware, synchronization, transactional memory},
6051 author = {Dave Dice and Yossi Lev and Virendra J. Marathe and Mark Moir and Dan Nussbaum and Marek Olszewski},
6052 title = {Simplifying Concurrent Algorithms by Exploiting Hardware Transactional Memory},
6053 booktitle = {Proceedings of the Twenty-second Annual ACM Symposium on Parallelism in Algorithms and Architectures},
6054 series = {SPAA'10},
6055 year = 2010,
6056 location = {Thira, Santorini, Greece},
6057 pages = {325-334},
6058 numpages = {10},
6059 publisher = {ACM},
6060 address = {New York, NY, USA},
6061}
6062
6063@article{PDM:overload,
6064 keywords = {compilation},
6065 contributer = {gjditchfield@plg},
6066 author = {Tom Pennello and Frank DeRemer and Richard Meyers},
6067 title = {A Simplified Operator Identification Scheme for {Ada}},
6068 journal = sigplan,
6069 year = 1980,
6070 month = {July--August},
6071 volume = 15,
6072 number = {7/8},
6073 pages = {82-87},
6074 comment = {
6075 The two-pass (bottom-up, top-down) overload resolution algorithm
6076 for Ada, with a proof that two passes suffice and a claim that two
6077 are necessary. See \cite{D:overload}.
6078 }
6079}
6080
6081@book{SimulaBegin,
6082 author = {Graham M. Birtwistle and Ole-Johan Dahl and Bj{\o}rn Myhrhaug and Kristen Nygaard},
6083 title = {{SIMULA} begin},
6084 publisher = {Studentlitteratur},
6085 year = {1980},
6086 address = {Lund, Sweden},
6087 edition = {2nd},
6088}
6089
6090@book{Simula67,
6091 author = {O-J Dahl and B. Myhrhaug and K. Nygaard},
6092 title = {Simula67 Common Base Language},
6093 month = oct,
6094 year = 1970,
6095 publisher = {Norwegian Com\-puting Center},
6096 address = {Oslo Norway},
6097}
6098
6099@book{smalltalk,
6100 keywords = {Smalltalk, abstract class, protocol},
6101 contributer = {gjditchfield@plg},
6102 author = {A. Goldberg and D. Robson},
6103 title = {Smalltalk-80: The Language and its Implementation},
6104 publisher = {Addison-Wesley},
6105 address = {Reading},
6106 year = 1983
6107}
6108
6109@inproceedings{Edelson92,
6110 keywords = {persistence, pointers},
6111 contributer = {pabuhr@plg},
6112 author = {Daniel R. Edelson},
6113 title = {Smart Pointers: They're Smart, but They're Not Pointers},
6114 booktitle = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Technical Conference Proceedings},
6115 organization= {USENIX Association},
6116 address = {Portland, Oregon, U.S.A.},
6117 month = aug,
6118 year = 1992,
6119 pages = {1-19},
6120}
6121
6122@book{SNOBOL,
6123 keywords = {SNOBOL4},
6124 contributer = {pabuhr@plg},
6125 author = {R. E. Griswold and J. F. Poage and I. P. Polonsky},
6126 title = {The SNOBOL4 Programming Language},
6127 edition = {2nd},
6128 publisher = {Prentice-Hall},
6129 address = {Englewood Cliffs},
6130 year = 1971,
6131}
6132
6133@article{Sutter05b,
6134 keywords = {concurrency},
6135 contributer = {pabuhr@plg},
6136 author = {Herb Sutter and James Larus},
6137 title = {Software and the Concurrency Revolution},
6138 journal = Queue,
6139 year = 2005,
6140 month = sep,
6141 volume = 3,
6142 number = 7,
6143 pages = {54-62},
6144}
6145
6146@inproceedings{raytheon,
6147 keywords = {cobol},
6148 contributer = {gjditchfield@plg},
6149 author = {Robert G. Lanergan and Charles A. Grasso},
6150 title = {Software Engineering with Reusable Designs and Code},
6151 booktitle = {Workshop on Reusability in Programming},
6152 year = 1983,
6153 month = sep,
6154 pages = {224-234},
6155 organization= {{ITT} Programming},
6156 summary = {
6157 60\% of business application design and code are redundant.
6158 Three standard program plans are used. Reuse doubles productivity
6159 during development and greatly helps program comprehension during
6160 maintenance.
6161 }
6162}
6163
6164@article{Hecht86,
6165 keywords = {exception handling, robustness},
6166 contributer = {pabuhr@plg},
6167 author = {H. Hecht and M. Hecht},
6168 title = {Software Reliability in the Systems Context},
6169 journal = ieeese,
6170 year = 1986,
6171 volume = 12,
6172 number = 1,
6173 pages = {51-58},
6174}
6175
6176@inproceedings{Herlihy03,
6177 author = {Maurice Herlihy and Victor Luchangco and Mark Moir and William N. {Scherer III}},
6178 title = {Software Transactional Memory for Dynamic-sized Data Structures},
6179 booktitle = {Proceedings of the Twenty-second Annual Symposium on Principles of Distributed Computing},
6180 series = {PODC '03},
6181 year = {2003},
6182 location = {Boston, Massachusetts},
6183 pages = {92-101},
6184 numpages = {10},
6185 publisher = {ACM},
6186 address = {New York, NY, USA},
6187}
6188
6189@article{Dijkstra65a,
6190 keywords = {N-thread software-solution mutual exclusion},
6191 contributer = {pabuhr@plg},
6192 author = {Edsger W. Dijkstra},
6193 title = {Solution of a Problem in Concurrent Programming Control},
6194 journal = cacm,
6195 volume = 8,
6196 number = 9,
6197 month = sep,
6198 year = 1965,
6199 pages = {569},
6200 publisher = {ACM},
6201 address = {New York, NY, USA},
6202}
6203
6204@inproceedings{Chen05,
6205 keywords = {fixed-priority, preemption},
6206 contributer = {pabuhr@plg},
6207 author = {Jiongxiong Chen and Ashif Harji and Peter Buhr},
6208 title = {Solution Space for Fixed-Priority with Preemption Threshold},
6209 booktitle = {Proceedings of the 11th Real Time and Embedded Technology and Applications Symposium (RTAS'05)},
6210 organization= {IEEE},
6211 address = {San Francisco, CA, U.S.A},
6212 month = mar,
6213 year = 2005,
6214 pages = {385-394}
6215}
6216
6217@inproceedings{Tiemann88,
6218 keywords = {wrappers},
6219 contributer = {pabuhr@plg},
6220 author = {Michael D. Tiemann},
6221 title = {Solving the RPC problem in GNU {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
6222 booktitle = {Proceedings of the USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
6223 organization= {USENIX Association},
6224 address = {Denver, Colorado, U.S.A},
6225 month = oct,
6226 year = 1988,
6227 pages = {343-361}
6228}
6229
6230@article{Smith98,
6231 keywords = {Polymorphic C},
6232 contributor = {a3moss@uwaterloo.ca},
6233 title={A sound polymorphic type system for a dialect of C},
6234 author={Smith, Geoffrey and Volpano, Dennis},
6235 journal={Science of computer programming},
6236 volume={32},
6237 number={1-3},
6238 pages={49--72},
6239 year={1998},
6240 publisher={Elsevier}
6241}
6242
6243@book{Campbell74,
6244 keywords = {path expressions},
6245 contributer = {pabuhr@plg},
6246 author = {R. H. Campbell and A. N. Habermann},
6247 title = {The Specification of Process Synchronization by Path Expressions},
6248 publisher = {Springer},
6249 year = 1974,
6250 volume = 16,
6251 pages = {89-102},
6252 series = {Lecture Notes in Computer Science},
6253}
6254
6255@article{Bentley85,
6256 keywords = {CSP, concurrency},
6257 contributer = {pabuhr@plg},
6258 author = {J. Bentley},
6259 title = {A Spelling Checker},
6260 journal = cacm,
6261 month = may,
6262 year = 1985,
6263 volume = 28,
6264 number = 5,
6265 pages = {456-462},
6266}
6267
6268@manual{POSIX01,
6269 keywords = {POSIX, Standard},
6270 contributer = {pabuhr@plg},
6271 key = {POSIX},
6272 title = {1003.1 Standard for Information Technology -- Portable Operating System Interface (POSIX), System Interface, Issue 6},
6273 organization= {IEEE and The Open Group},
6274 year = 2001,
6275}
6276
6277@manual{POSIX08,
6278 keywords = {POSIX, Standard},
6279 contributer = {pabuhr@plg},
6280 key = {POSIX},
6281 title = {1003.1 Standard for Information Technology -- Portable Operating System Interface (POSIX), Base Specifications, Issue 7},
6282 organization= {IEEE and The Open Group},
6283 year = 2008,
6284}
6285
6286@inproceedings{ML:NJ,
6287 keywords = {continuations, ML},
6288 contributer = {pabuhr@plg},
6289 author = {A. Appel and D. MacQueen},
6290 title = {A Standard {ML} Compiler},
6291 booktitle = {Functional Programming Languages and Computer Architecture},
6292 publisher = {Springer},
6293 series = {Lecture Notes in Computer Science},
6294 volume = 274,
6295 year = 1987,
6296 pages = {301-324},
6297}
6298
6299@techreport{MLreport,
6300 keywords = {ML, polymorphism},
6301 contributer = {pabuhr@plg},
6302 author = {R. Milner},
6303 title = {The Standard {ML} Core Language},
6304 institution = {},
6305 number = {Polymorphism II.2},
6306 month = oct,
6307 year = 1985
6308}
6309
6310@inproceedings{Ghelli,
6311 keywords = {},
6312 contributer = {gjditchfield@plg},
6313 author = {Giorgio Ghelli},
6314 title = {A Static Type System for Message Passing},
6315 crossref = "OOPSLA91",
6316 pages = {129-145},
6317 summary = {
6318 A strong, statically checked type system for object oriented
6319 languages is defined by modelling methods as overloaded functions
6320 with a "self" parameter, with dynamic overload resolution. This
6321 allows covariant method redefinition. However, if equality is
6322 covariantly redefined for Point and ColoredPoint classes, and a
6323 ColoredPoint is compared to a Point, Point equality will be used,
6324 even if self is the colored point!
6325 }
6326}
6327
6328@article{Dijkstra68b,
6329 keywords = {semaphore, P/V},
6330 contributer = {pabuhr@plg},
6331 author = {E. W. Dijkstra},
6332 title = {The Structure of the ``{THE}''--Multiprogramming System},
6333 journal = cacm,
6334 month = may,
6335 year = 1968,
6336 volume = 11,
6337 number = 5,
6338 pages = {341-346}
6339}
6340
6341@online{Sutter15,
6342 contributer = {pabuhr@plg},
6343 author = {Herb Sutter and Bjarne Stroustrup and Gabriel Dos Reis},
6344 title = {Structured bindings},
6345 issue_date = {2015-10-14},
6346 month = oct,
6347 year = 2015,
6348 pages = {1--6},
6349 numpages = {6},
6350 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}},
6351}
6352
6353@book{Holt78,
6354 keywords = {operating systems, concurrency},
6355 contributer = {pabuhr@plg},
6356 author = {R. C. Holt and G. S. Graham and E. D. Lazowska and M. A. Scott},
6357 title = {Structured Concurrent Programming with Operating System Applications},
6358 publisher = {Addison-Wesley},
6359 address = {Boston},
6360 year = 1978,
6361}
6362
6363@article{Stevens74,
6364 keywords = {coupling, cohesion},
6365 contributer = {pabuhr@plg},
6366 author = {W. P. Stevens and and G. J. Myers and L. L. Constantine},
6367 title = {Structured Design},
6368 journal = ibmsj,
6369 year = 1974,
6370 volume = 13,
6371 number = 2,
6372 pages = {115-139},
6373}
6374
6375@article{Hansen72b,
6376 keywords = {critical region},
6377 contributer = {pabuhr@plg},
6378 author = {Per {Brinch Hansen}},
6379 title = {Structured Multiprogramming},
6380 journal = cacm,
6381 volume = 15,
6382 number = 7,
6383 month = jul,
6384 year = 1972,
6385 pages = {574-578},
6386}
6387
6388@article{Knuth74,
6389 keywords = {structured programming, goto statement},
6390 contributer = {pabuhr@plg},
6391 author = {Donald E. Knuth},
6392 title = {Structured Programming with go to Statements},
6393 journal = acmcs,
6394 volume = 6,
6395 number = 4,
6396 month = dec,
6397 year = 1974,
6398 pages = {261-301},
6399 issn = {0360-0300},
6400 doi = {http://doi.acm.org/10.1145/356635.356640},
6401 publisher = {ACM},
6402 address = {New York, NY, USA},
6403}
6404
6405@article{Lang98,
6406 keywords = {real-time, exception handling},
6407 contributer = {pabuhr@plg},
6408 author = {Jun Lang and David B. Stewart},
6409 title = {A Study of the Applicability of Existing Exception-Handling Techniques to Component-Based Real-Time Software Technology},
6410 journal = toplas,
6411 month = mar,
6412 year = 1998,
6413 volume = 20,
6414 number = 2,
6415 pages = {274-301},
6416}
6417
6418@mastersthesis{Fortier89,
6419 keywords = {monitors},
6420 contributer = {pabuhr@plg},
6421 author = {Michel Fortier},
6422 title = {Study of Monitors},
6423 school = {Department of Computer Science, University of Waterloo},
6424 year = 1989,
6425 address = {Waterloo, Ontario, Canada, N2L 3G1},
6426}
6427
6428@techreport{AmadioCardelli,
6429 keywords = {},
6430 contributer = {gjditchfield@plg},
6431 author = {Roberto M. Amadio and Luca Cardelli},
6432 title = {Subtyping Recursive Types},
6433 institution = {Digital Equipment Corporation Systems Research Center},
6434 year = 1990,
6435 address = {130 Lytton Avenue, Palo Alto, California 94301},
6436 month = aug,
6437 number = 62,
6438 summary = {
6439 \[ (s \leq t \Rightarrow \alpha \leq \beta) \Rightarrow
6440 \mu s.\alpha leq \mu t.\beta \]
6441 \[ \alpha = C[\alpha] \and \beta = C[\beta] \and C contractive
6442 \Rightarrow \alpha = \beta \]
6443 where a type \(\alpha\) is contractive in the type variable \(t\)
6444 if either \(t\) does not occur free in \(\alpha\), or \(\alpha\)
6445 can be rewritten via unfolding as a type of the shape
6446 \(\alpha_1 \rightarrow \alpha_2\), and unfolding rewrites
6447 \(\mu t.\alpha\) as \([t\leftarrow\mu t.\alpha]\alpha\). An
6448 algorithm for finding type contexts \(C\) is given.
6449 }
6450}
6451
6452@techreport{Dijkstra80,
6453 keywords = {split binary semaphores, general to binary},
6454 contributer = {pabuhr@plg},
6455 author = {Edsger W. Dijkstra},
6456 title = {The Superfluity of the General Semaphore},
6457 institution = {Nuenen},
6458 address = {Netherlands},
6459 number = {EWD734},
6460 month = apr,
6461 year = 1980,
6462}
6463
6464@inproceedings{Burns81,
6465 keywords = {N-thread software-solution mutual exclusion},
6466 contributer = {pabuhr@plg},
6467 author = {James E. Burns},
6468 title = {Symmetry in Systems of Asynchronous Processes},
6469 booktitle = {22nd Annual Symposium on Foundations of Computer Science, Nashville, TN, USA},
6470 year = 1981,
6471 month = oct,
6472 organization= {IEEE Computer Society},
6473 address = {Los Angeles, CA, USA},
6474 pages = {169-174},
6475}
6476
6477@article{Coffman71,
6478 keywords = {deadlock},
6479 contributer = {pabuhr@plg},
6480 author = {E. G. {Coffman, Jr.} and M. J. Elphick and A. Shoshani},
6481 title = {System Deadlocks},
6482 journal = acmcs,
6483 volume = 3,
6484 number = 2,
6485 month = jun,
6486 year = 1971,
6487 pages = {67-78},
6488 publisher = {ACM Press},
6489 address = {New York, NY, USA},
6490 doi = {http://doi.acm.org/10.1145/356586.356588},
6491}
6492
6493@phdthesis{Holmes99,
6494 keywords = {synchronization, inheritance anomaly},
6495 contributer = {pabuhr@plg},
6496 author = {David Holmes},
6497 title = {Synchronisation Rings: Composable Synchronisation for Object-Oriented Systems},
6498 school = {Department of Computing, Macquarie University},
6499 month = oct,
6500 year = 1999,
6501 address = {Sydney, Australia},
6502}
6503
6504@book{Taubenfeld06,
6505 keywords = {concurrency, synchronization},
6506 author = {Gadi Taubenfeld},
6507 title = {Synchronization Algorithms and Concurrent Programming},
6508 publisher = {Pearson/Prentice-Hall},
6509 address = {Harlow, England},
6510 year = 2006,
6511}
6512
6513@article{Buhr92b,
6514 keywords = {concurrency, exception handling, interventions},
6515 contributer = {pabuhr@plg},
6516 author = {Peter A. Buhr and Hamish I. Macdonald and C. Robert Zarnke},
6517 title = {Synchronous and Asynchronous Handling of Abnormal Events in the $\mu${S}ystem},
6518 journal = spe,
6519 volume = 22,
6520 number = 9,
6521 month = sep,
6522 year = 1992,
6523 pages = {735-776},
6524}
6525
6526@inproceedings{Greenwald96,
6527 keywords = {compare and swap, hardware atomicity},
6528 contributer = {pabuhr@plg},
6529 author = {Michael Greenwald and David Cheriton},
6530 title = {The Synergy between Non-blocking Synchronization and Operating System Structure},
6531 booktitle = {Proceedings of the Second USENIX Symposium on Operating Systems Design and Implementation},
6532 organization= {USENIX Association},
6533 address = {Seattle, Washington, U.S.A.},
6534 month = oct,
6535 year = 1996,
6536 pages = {123-136},
6537}
6538
6539@inbook{SunLWP,
6540 keywords = {light-weight processes, threads},
6541 contributer = {pabuhr@plg},
6542 key = {Sun},
6543 title = {System Services Overview, Lightweight Processes},
6544 chapter = {6},
6545 pages = {71-111},
6546 publisher = {Sun Microsystems},
6547 month = may,
6548 year = 1988,
6549 note = {available as Part Number: 800-1753-10},
6550}
6551
6552@article{Randell75,
6553 contributer = {pabuhr@plg},
6554 author = {Brian Randell},
6555 title = {System Structure for Software Fault Tolerance},
6556 journal = ieeese,
6557 volume = {SE-1},
6558 number = 2,
6559 month = jun,
6560 year = 1975,
6561 pages = {220-232},
6562}
6563
6564@book{Modula-3,
6565 keywords = {language reference manual},
6566 contributer = {pabuhr@plg},
6567 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},
6568 title = {Systems Programming with Modula-3},
6569 publisher = {Prentice-Hall},
6570 address = {Englewood Cliffs},
6571 year = 1991,
6572 series = {Prentice-Hall Series in Innovative Technology}
6573}
6574
6575% T
6576
6577@article{Yeager91,
6578 keywords = {teaching, concurrency},
6579 contributer = {pabuhr@plg},
6580 author = {Dorian P. Yeager},
6581 title = {Teaching Concurrency in the Programming Languages Course},
6582 journal = {SIGCSE BULLETIN},
6583 volume = 23,
6584 number = 1,
6585 month = mar,
6586 year = 1991,
6587 pages = {155-161},
6588 note = {The Papers of the Twenty-Second SIGCSE Technical Symposium on Computer Science Education,
6589 March. 7--8, 1991, San Antonio, Texas, U.S.A.},
6590}
6591
6592@article{ml,
6593 keywords = {ML, polymorphism},
6594 contributer = {gjditchfield@plg},
6595 author = {Robin Milner},
6596 title = {A Theory of Type Polymorphism in Programming},
6597 journal = jcss,
6598 year = 1978,
6599 volume = 17, pages = {348-375}
6600}
6601
6602@book{Thoth,
6603 keywords = {messages, concurrency},
6604 contributer = {pabuhr@plg},
6605 author = {D. R. Cheriton},
6606 title = {The Thoth System: Multi-Process Structuring and Portability},
6607 publisher = {American Elsevier},
6608 year = 1982
6609}
6610
6611@article{Boehm05,
6612 keywords = {concurrency, C++},
6613 contributer = {pabuhr@plg},
6614 author = {Hans-J. Boehm},
6615 title = {Threads Cannot be Implemented as a Library},
6616 journal = sigplan,
6617 volume = 40,
6618 number = 6,
6619 month = jun,
6620 year = 2005,
6621 pages = {261-268},
6622}
6623
6624@online{TIOBE,
6625 contributer = {pabuhr@plg},
6626 author = {{TIOBE Index}},
6627 year = {March 2017},
6628 url = {http://www.tiobe.com/tiobe_index},
6629}
6630
6631@misc{Bumbulis90,
6632 keywords = {parameter inference, ForceN},
6633 contributer = {gjditchfield@plg},
6634 author = {Peter Bumbulis},
6635 title = {Towards Making Signatures First-Class},
6636 howpublished= {personal communication},
6637 month = sep,
6638 year = 1990,
6639 note = {}
6640}
6641
6642@techreport{alphard:preempt,
6643 keywords = {},
6644 contributer = {gjditchfield@plg},
6645 author = {Mary Shaw and Wm. A. Wulf},
6646 title = {Toward Relaxing Assumptions in Languages and Their Implementations},
6647 institution = {Carnegie-Mellon University},
6648 year = 1980,
6649 month = jan,
6650 note = {Reprinted in \cite{alphard}.}
6651}
6652
6653@inproceedings{Reynolds74,
6654 keywords = {universal quantification, typed lambda calculus},
6655 contributer = {gjditchfield@plg},
6656 author = {John C. Reynolds},
6657 title = {Towards a Theory of Type Structure},
6658 booktitle = {Colloque sur la Programmation},
6659 year = 1974,
6660 pages = {408-423},
6661 editor = {B. Robinet},
6662 publisher = {Springer},
6663 note = {Lecture Notes in Computer Science, v. 19},
6664 abstract = {
6665
6666 }
6667}
6668
6669@incollection{Hoare72,
6670 keywords = {critical region, concurrency},
6671 contributer = {pabuhr@plg},
6672 author = {C. A. R. Hoare},
6673 title = {Towards a Theory of Parallel Programming},
6674 booktitle = {Operating Systems Techniques},
6675 editor = {C. A. R. Hoare and R. H. Perott},
6676 publisher = {Academic Press, New York},
6677 year = 1972,
6678 pages = {61-71},
6679}
6680
6681@inproceedings{Mitchell90,
6682 keywords = {polymorphism, lambda calculus, bounded quantification},
6683 contributer = {gjditchfield@plg},
6684 author = {John C. Mitchell},
6685 title = {Toward a Typed Foundation for Method Specialization and Inheritance},
6686 booktitle = {Conference Record of the Seventeenth Annual ACM Symposium
6687 on Principles of Programming Languages},
6688 year = 1990,
6689 month = jan, pages = {109-124},
6690 organization= {Association for Computing Machinery},
6691 abstract = {
6692 This paper disucsses the phenomenon of {\em method specialization}
6693 in object-oriented programming languages. A typed function
6694 calculus of objects and classes is presented, featuring method
6695 specialization when methods are added or redefined. The soundness
6696 of the typing rules (without subtyping) is suggested by a
6697 translation into a more traditional calculus with
6698 recursively-defined record types. However, semantic questions
6699 regarding the subtype relation on classes remain open.
6700 }
6701}
6702
6703@article{EL1,
6704 keywords = {polymorphism},
6705 contributer = {pabuhr@plg},
6706 author = {B. Wegbreit},
6707 title = {The Treatment of Data Types in {EL1}},
6708 journal = cacm,
6709 volume = 17,
6710 number = 5,
6711 month = may,
6712 year = 1974,
6713 pages = {251-264},
6714}
6715
6716@mastersthesis{Till89,
6717 keywords = {C, multiple return values, tuples},
6718 contributer = {pabuhr@plg},
6719 author = {David W. Till},
6720 title = {Tuples In Imperative Programming Languages},
6721 school = {Department of Computer Science, University of Waterloo},
6722 year = 1989,
6723 address = {Waterloo, Ontario, Canada, N2L 3G1},
6724}
6725
6726@article{turing:old,
6727 keywords = {verification, context conditions, faithful execution},
6728 contributer = {gjditchfield@plg},
6729 author = {R. C. Holt and J. R. Cordy},
6730 title = {The Turing Programming Language},
6731 journal = cacm,
6732 year = 1988,
6733 month = dec,
6734 volume = 31, number = 12, pages = {1410-1423}
6735}
6736
6737@book{Turing,
6738 keywords = {verification, context conditions, faithful execution},
6739 contributer = {pabuhr@plg},
6740 author = {R. C. Holt},
6741 title = {Turing Reference Manual},
6742 publisher = {Holt Software Associates Inc.},
6743 year = 1992,
6744 edition = {3rd},
6745}
6746
6747@techreport{Dijkstra79,
6748 keywords = {split binary semaphores},
6749 contributer = {pabuhr@plg},
6750 author = {Edsger W. Dijkstra},
6751 title = {A Tutorial on the Split Binary Semaphore},
6752 institution = {Nuenen},
6753 address = {Netherlands},
6754 number = {EWD703},
6755 month = mar,
6756 year = 1979,
6757}
6758
6759@book{pldesign,
6760 keywords = {},
6761 editor = {Anthony I. Wasserman},
6762 title = {Tutorial: Programming Language Design},
6763 publisher = {Computer Society Press},
6764 address = {Los Alamitos},
6765 year = 1980
6766}
6767
6768@article{Leroy00,
6769 keywords = {type-systems, exceptions},
6770 contributer = {pabuhr@plg},
6771 author = {Xavier Leroy and Fran\c{c}ois Pessaux},
6772 title = {Type-Based Analysis of Uncaught Exceptions},
6773 journal = toplas,
6774 month = mar,
6775 year = 2000,
6776 volume = 22,
6777 number = 2,
6778 pages = {340-377},
6779 comment = {
6780 Argues against declaring exceptions on routine definitions.
6781 },
6782}
6783
6784@article{Cormack90,
6785 keywords = {polymorphism},
6786 contributer = {pabuhr@plg},
6787 author = {G. V. Cormack and A. K. Wright},
6788 title = {Type-dependent Parameter Inference},
6789 journal = sigplan,
6790 volume = 25,
6791 number = 6,
6792 month = jun,
6793 publisher = {ACM},
6794 address = {New York, NY, USA},
6795 year = 1990,
6796 pages = {127-136},
6797 note = {Proceedings of the ACM Sigplan'90 Conference on Programming Language Design and Implementation
6798 June 20-22, 1990, White Plains, New York, U.S.A.},
6799}
6800
6801@article{concatenation,
6802 keywords = {record concatenation, isa},
6803 contributer = {gjditchfield@plg},
6804 author = {N. Wirth},
6805 title = {Type Extensions},
6806 journal = toplas,
6807 volume = {10},
6808 number = {2},
6809 pages = {204-214},
6810 month = apr, year = 1988,
6811 comment = {
6812 Extended record types add fields to their base record. Assignment
6813 truncations. Pointers can point at extended type instances. For
6814 polymorphism, call by value is assignment, and call by reference is
6815 pointer passing. Overloading isn't discussed. Type information
6816 can be recovered through an ``is'' type test or through type guards
6817 (casts). A version of the WITH statement could avoid repeated
6818 checking.
6819
6820 Private/public access to record fields can be provided by exporting
6821 a base type, and using a private extension. Statically allocated
6822 instances need a compiler hint specifying the maximum size of the
6823 private type.
6824
6825 Type checking is cheap (if the creation of pointer values is
6826 controlled). Types have type descriptors. Extension descriptors
6827 point at their direct base. Heap objects point at their
6828 descriptor, and reference parameters are accompanied by type
6829 descriptor parameters. ``v is t0'' loops along the chain of
6830 descriptors.
6831 }
6832}
6833
6834% U
6835
6836@book{uC++book,
6837 keywords = {control structure, concurrency, uC++},
6838 contributer = {pabuhr@plg},
6839 author = {Peter A. Buhr},
6840 title = {Understanding Control Flow: Concurrent Programming using $\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
6841 publisher = {Springer},
6842 address = {Switzerland},
6843 year = 2016,
6844}
6845
6846@article{Cardelli85,
6847 keywords = {polymorphism},
6848 contributer = {pabuhr@plg},
6849 author = {Luca Cardelli and Peter Wegner},
6850 title = {On Understanding Types, Data Abstractions, and Polymorphism},
6851 journal = acmcs,
6852 month = dec,
6853 year = 1985,
6854 volume = 17,
6855 number = 4,
6856 pages = {471-522},
6857}
6858
6859@inproceedings{Wilson92,
6860 keywords = {garbage collection survey},
6861 contributer = {pabuhr@plg},
6862 author = {Paul R. Wilson},
6863 title = {Uniprocessor Garbage Collection Techniques},
6864 booktitle = {Proceedings of the International Workshop on Memory Management},
6865 location = {St. Malo, France},
6866 publisher = {Springer},
6867 series = {Lecture Notes in Computer Science},
6868 volume = 637,
6869 month = sep,
6870 year = {1992},
6871 pages = {1-42},
6872}
6873
6874@inproceedings{Hewitt73,
6875 author = {Carl Hewitt and Peter Bishop and Richard Steiger},
6876 title = {A Universal Modular {ACTOR} Formalism for Artificial Intelligence},
6877 booktitle = {Proceedings of the 3rd International Joint Conference on Artificial Intelligence},
6878 address = {Standford, California, U.S.A.},
6879 pages = {235-245},
6880 month = aug,
6881 year = 1973,
6882}
6883
6884@article{Bourne78,
6885 keywords = {Shell},
6886 contributer = {pabuhr@plg},
6887 author = {S. R. Bourne},
6888 title = {The UNIX Shell},
6889 journal = {The Bell System Technical Journal},
6890 volume = {57, part 2},
6891 month = {July--August},
6892 year = 1978,
6893 pages = {1971-1990},
6894}
6895
6896@inproceedings{Krischer12,
6897 keywords = {exception, usability, asynchronous, assertion, injection, logging},
6898 contributer = {pabuhr@plg},
6899 author = {Roy Krischer and Peter A. Buhr},
6900 title = {Usability Challenges in Exception Handling},
6901 booktitle = {5th International Workshop on Exception Handling (WEH)},
6902 organization= {16th International Symposium on the Foundations of Software Engineering (FSE 16)},
6903 address = {Zurich, Switzerland},
6904 month = jun,
6905 year = 2012,
6906 pages = {7-13},
6907}
6908
6909@techreport{Harmony,
6910 keywords = {messages, concurrency},
6911 contributer = {pabuhr@plg},
6912 author = {W. Morven Gentleman},
6913 title = {Using the Harmony Operating System},
6914 institution = {National Research Council of Canada, Ottawa, Canada},
6915 number = {24685},
6916 month = may,
6917 year = 1985
6918}
6919
6920@article{delegation,
6921 keywords = {delegation, inheritance, actors},
6922 contributer = {gjditchfield@plg},
6923 author = {Henry Lieverman},
6924 title = {Using Prototypical Objects to Implement Shared Behavior in
6925 Object Oriented Systems},
6926 journal = sigplan,
6927 month = nov, year = 1986,
6928 volume = 21, number = 11, pages = {214-223}
6929}
6930
6931% V
6932
6933@article{V-Kernel,
6934 keywords = {messages, concurrency},
6935 contributer = {pabuhr@plg},
6936 author = {David R. Cheriton},
6937 title = {The {V} Distributed System},
6938 journal = cacm,
6939 month = mar,
6940 year = 1988,
6941 volume = 31,
6942 number = 3,
6943 pages = {314-333}
6944}
6945
6946@online{Vala,
6947 keywords = {GObject, Vala},
6948 contributor = {a3moss@uwaterloo.ca},
6949 author = {{Vala}},
6950 organization= {The GNOME Project},
6951 title = {Vala Reference Manual},
6952 year = 2017,
6953 url = {https://wiki.gnome.org/Projects/Vala/Manual},
6954 urldate = {2017-04-04}
6955}
6956
6957@inproceedings{Amdahl67,
6958 author = {Gene M. Amdahl},
6959 title = {Validity of the Single Processor Approach to Achieving Large Scale Computing Capabilities},
6960 booktitle = {Proceedings of the April 18-20, 1967, Spring Joint Computer Conference},
6961 series = {AFIPS '67 (Spring)},
6962 year = 1967,
6963 location = {Atlantic City, New Jersey},
6964 pages = {483--485},
6965 publisher = {ACM},
6966 address = {New York, NY, USA},
6967}
6968
6969@article{Mayer81,
6970 keywords = {},
6971 contributer = {pabuhr@plg},
6972 author = {A. J. W. Mayer},
6973 title = {Value Receiving Procedures},
6974 journal = sigplan,
6975 volume = 16,
6976 number = 11,
6977 month = nov,
6978 year = 1981,
6979 pages = {30-34},
6980}
6981
6982@article{Doran80,
6983 keywords = {concurrency, Dekker's Algorithm},
6984 contributer = {pabuhr@plg},
6985 author = {R. W. Doran and L. K. Thomas},
6986 title = {Variants of the Software Solution to Mutual Exclusion},
6987 journal = ipl,
6988 month = jul,
6989 year = 1980,
6990 volume = 10,
6991 number = {4/5},
6992 pages = {206-208},
6993}
6994
6995@book{VAX,
6996 keywords = {VAX, DEC},
6997 contributer = {pabuhr@plg},
6998 key = {VAX},
6999 title = {VAX-11 Architecture Reference Manual},
7000 publisher = {Digital Press},
7001 address = {Bedford},
7002 month = may,
7003 year = 1982,
7004}
7005
7006@book{Kenah88,
7007 author = {Lawrence J. Kenah and Ruth E. Goldenberg and Simon F. Bate},
7008 title = {{VAX/VMS} Internals and Data Structures Version 4.4},
7009 publisher = {Digital Press},
7010 address = {Bedford},
7011 year = 1988,
7012}
7013
7014@article{Hesselink13,
7015 keywords = {software solutions, N-thread, mutual exclusions},
7016 contributer = {pabuhr@plg},
7017 author = {Wim H. Hesselink},
7018 title = {Verifying a Simplification of Mutual Exclusion by {L}ycklama--{H}adzilacos},
7019 journal = {Acta Informatica},
7020 publisher = {Springer},
7021 address = {New York},
7022 year = {2013},
7023 volume = {50},
7024 number = {3},
7025 pages = {199-228},
7026}
7027
7028% W
7029
7030@article{Herlihy91,
7031 keywords = {linearization, wait-free synchronization},
7032 contributer = {pabuhr@plg},
7033 author = {Maurice Herlihy},
7034 title = {Wait-free Synchronization},
7035 journal = toplas,
7036 volume = {13},
7037 number = {1},
7038 month = jan,
7039 year = 1991,
7040 pages = {124--149},
7041 numpages = {26},
7042 publisher = {ACM},
7043 address = {New York, NY, USA},
7044}
7045
7046@techreport{Moss90,
7047 keywords = {Swizzling, database},
7048 contributer = {akgoel@plg},
7049 author = {J. Moss},
7050 title = {Working with Persistent Objects: To Swizzle or Not to Swizzle},
7051 institution = {CS Department, University of Massachusetts},
7052 address = {},
7053 number = {CS 90-38},
7054 month = may,
7055 year = 1990,
7056}
7057
7058@inproceedings{Str:oop,
7059 keywords = { },
7060 contributer = {pabuhr@plg},
7061 author = {Bjarne Stroustrup},
7062 title = {What is ``Object-Oriented Programming''?},
7063 booktitle = {Proceedings of the First European Conference on Object Oriented Programming},
7064 month = jun,
7065 year = 1987
7066}
7067
7068@misc{Stroustrup:overloading,
7069 keywords = {operator overloading},
7070 contributer = {pabuhr@plg},
7071 author = {Bjarne Stroustrup},
7072 title = {Why can't I overload dot, ::, sizeof, etc.?},
7073 month = oct,
7074 year = 2007,
7075 howpublished= {{\small\textsf{http://\-www.research.att.com/\-bs/\-bs\_faq2.html\-\#overload-dot}}},
7076}
7077
7078@techreport{Gray85,
7079 keywords = {fault-tolerant system},
7080 contributer = {pabuhr@plg},
7081 author = {Jim Gray},
7082 title = {Why Do Computers Stop and What Can Be Done About It?},
7083 institution = {Tandem Computers},
7084 number = {85.7 PN87614},
7085 month = jun,
7086 year = 1985,
7087 note = {\href{http://www.hpl.hp.com/techreports/tandem/TR-85.7.pdf}{http://www.hpl.hp.com/\-techreports/\-tandem/\-TR-85.7.pdf}},
7088}
7089
7090% X
7091
7092% Y
7093
7094% Z
7095
7096% Cross-referenced entries:
7097
7098% O
7099
7100% The SIGPLAN Notices issue should be in a note field, but notes are
7101% inherited by all refering entries, instead of being held in the
7102% cross-referenced entry. Putting it in "publisher" is a kludge, but it
7103% works.
7104@proceedings{OOPSLA86,
7105 contributer = {gjditchfield@plg},
7106 title = {{OOPSLA} '86 Conference Proceedings},
7107 booktitle = {{OOPSLA} '86 Conference Proceedings},
7108 year = 1986,
7109 editor = {Norman Meyrowitz},
7110 publisher = sigplan # " 21(11)",
7111 organization= {Association for Computing Machinery},
7112 address = {Portland, Oregon},
7113 month = sep # { 29}
7114}
7115
7116@proceedings{OOPSLA87,
7117 contributer = {gjditchfield@plg},
7118 title = {{OOPSLA} '87 Conference Proceedings},
7119 booktitle = {{OOPSLA} '87 Conference Proceedings},
7120 year = 1987,
7121 editor = {Norman Meyrowitz},
7122 publisher = sigplan # " 22(12)",
7123 organization= {Association for Computing Machinery},
7124 address = {Orlando, Florida},
7125 month = oct # { 4--8}
7126}
7127
7128@proceedings{OOPSLA88,
7129 contributer = {gjditchfield@plg},
7130 title = {{OOPSLA} '88 Conference Proceedings},
7131 booktitle = {{OOPSLA} '88 Conference Proceedings},
7132 year = 1988,
7133 editor = {Norman Meyrowitz},
7134 publisher = sigplan # " 23(11)",
7135 organization= {Association for Computing Machinery},
7136 address = {San Diego, California},
7137 month = sep # { 25--30}
7138}
7139
7140@proceedings{OOPSLA89,
7141 contributer = {gjditchfield@plg},
7142 title = {{OOPSLA} '89 Conference Proceedings},
7143 booktitle = {{OOPSLA} '89 Conference Proceedings},
7144 year = 1989,
7145 editor = {Norman Meyrowitz},
7146 publisher = sigplan # " 24(10)",
7147 organization= {Association for Computing Machinery},
7148 address = {New Orleans, Louisiana},
7149 month = oct # { 1--6}
7150}
7151
7152@proceedings{OOPSLA90,
7153 contributer = {gjditchfield@plg},
7154 title = {{OOPSLA/ECOOP} '90 Conference Proceedings},
7155 booktitle = {{OOPSLA} '90 Conference Proceedings},
7156 year = 1990,
7157 editor = {Norman Meyrowitz},
7158 publisher = sigplan # " 25(10)",
7159 organization= {Association for Computing Machinery},
7160 address = {Ottawa, Canada},
7161 month = oct # { 21--25}
7162}
7163
7164@proceedings{OOPSLA91,
7165 contributer = {gjditchfield@plg},
7166 title = {{OOPSLA} '91 Conference Proceedings},
7167 booktitle = {{OOPSLA} '91 Conference Proceedings},
7168 year = 1991,
7169 editor = {Andreas Paepcke},
7170 publisher = sigplan # " 26(11)",
7171 organization= {Association for Computing Machinery},
7172 address = {Phoenix, Arizona},
7173 month = oct # { 6--11}
7174}
Note: See TracBrowser for help on using the repository browser.