source: doc/bibliography/pl.bib@ b3edf7f5

ADT aaron-thesis arm-eh ast-experimental cleanup-dtors enum forall-pointer-decay jacob/cs343-translation jenkins-sandbox new-ast new-ast-unique-expr pthread-emulation qualifiedEnum
Last change on this file since b3edf7f5 was c58bb11, checked in by Aaron Moss <a3moss@…>, 7 years ago

Complete background work on resolution algorithms

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