source: doc/bibliography/pl.bib@ 2ec65ad

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 2ec65ad was 1280f95, checked in by Peter A. Buhr <pabuhr@…>, 8 years ago

add Thierry's masters thesis

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