source: doc/bibliography/pl.bib@ 0087e0e

ADT 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 0087e0e was 8b590a4, checked in by Peter A. Buhr <pabuhr@…>, 7 years ago

Merge branch 'master' of plg.uwaterloo.ca:software/cfa/cfa-cc

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