source: doc/bibliography/pl.bib@ 70eaa80b

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

thesis: update discussion of Java type inference

  • Property mode set to 100644
File size: 253.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}
1162
1163@book{Yourdon79,
1164 keywords = {software engineering},
1165 contributer = {pabuhr@plg},
1166 editor = {Edward Nash Yourdon},
1167 title = {Classics in Software Engineering},
1168 publisher = {Yourdon Press},
1169 address = {New York},
1170 year = 1979,
1171}
1172
1173@inproceedings{Crnogorac98,
1174 keywords = {inheritance anomaly},
1175 contributer = {pabuhr@plg},
1176 author = {Lobel Crnogorac and Anand S. Rao and Kotagiri Ramamohanarao},
1177 title = {Classifying Inheritance Mechanisms in Concurrent Object-Oriented Programming},
1178 editor = {Eric Jul},
1179 booktitle = {{ECOOP}~'98---Object-Oriented Programming},
1180 series = {Lecture Notes in Computer Science},
1181 publisher = {Springer},
1182 volume = 1445,
1183 year = 1998,
1184 pages = {571-601},
1185 ISBN = {3-540-64737-6},
1186 ISSN = {0302-9743},
1187 abstract = {
1188 Inheritance is one of the key concepts in object-oriented rogramming. However, the
1189 usefulness of inheritance in concurrent object-oriented programming is greatly
1190 reduced by the problem of inheritance anomaly. Inheritance anomaly is manifested
1191 by undesirable re-definitions of inherited code. The problem is aggravated by the
1192 lack of a formal analysis, with a multitude of differing proposals and conflicting
1193 opinions causing the current state of research, and further directions, to be
1194 unclear. In this paper we present a formal analysis of inheritance anomaly in
1195 concurrent object-oriented programming. Starting from a formal definition of the
1196 problem we develop a taxonomy of the anomaly, and use it to classify the various
1197 proposals. As a result, the major ideas, trends and limitations of the various
1198 proposals are clearly exposed. Formal analysis of the anomaly and a thorough
1199 exposition of its causes and implications are the pre-requisites for a successful
1200 integration of inheritance and concurrency.
1201 },
1202}
1203
1204@book{CLU,
1205 keywords = {CLU},
1206 contributer = {gjditchfield@plg},
1207 author = {Barbara Liskov and Russell Atkinson and Toby Bloom and Eliot
1208 Moss and J. Craig Schaffert and Robert Scheifler and Alan Snyder},
1209 title = {CLU Reference Manual},
1210 publisher = {Springer},
1211 address = {New York},
1212 year = 1981,
1213 volume = 114,
1214 series = {Lecture Notes in Computer Science}
1215}
1216
1217@manual{Cobol14,
1218 keywords = {ISO/IEC Cobol 14},
1219 contributer = {pabuhr@plg},
1220 author = {Cobol14},
1221 title = {Programming Languages -- {Cobol} ISO/IEC 1989:2014},
1222 edition = {2nd},
1223 institution = {International Standard Organization},
1224 address = {\href{https://www.iso.org/standard/51416.html}{https://\-www.iso.org/\-standard/\-51416.html}},
1225 year = 2014,
1226}
1227
1228@article{coagulation,
1229 keywords = {register allocation, instruction selection, jello},
1230 contributer = {gjditchfield@plg},
1231 author = {Michael Karr},
1232 title = {Code Generation by Coagulation},
1233 journal = sigplan,
1234 year = 1984,
1235 month = jun,
1236 volume = 19,
1237 number = 6,
1238 pages = {1-12},
1239 note = {Proceedings of the ACM SIGPLAN '84 Symposium on Compiler Construction},
1240 abstract = {
1241 This paper describes a new approach to code-generation. The
1242 central tenet is that there must be a more intimate coupling
1243 between register allocation and instruction selection than exists
1244 in present-day technology. This is achieved by generating code in
1245 very small regions and gradually coalescing the part of the program
1246 that is ``compiled''.
1247 },
1248}
1249
1250@article{Soloway83,
1251 keywords = {goto, structure programming},
1252 contributer = {pabuhr@plg},
1253 author = {E. Soloway and J. Bonar and K. Ehrlich},
1254 title = {Cognitive Strategies and Looping Constructs: An Empirical Study},
1255 journal = cacm,
1256 month = nov,
1257 year = 1983,
1258 volume = 26,
1259 number = 11,
1260 pages = {853-860},
1261}
1262
1263@inproceedings{Odersky01,
1264 keywords = {Scala},
1265 contributer = {a3moss@uwaterloo.ca},
1266 author = {Odersky, Martin and Zenger, Christoph and Zenger, Matthias},
1267 title = {Colored Local Type Inference},
1268 booktitle = {Proceedings of the 28th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages},
1269 series = {POPL '01},
1270 year = {2001},
1271 isbn = {1-58113-336-7},
1272 location = {London, United Kingdom},
1273 pages = {41--53},
1274 numpages = {13},
1275 url = {http://doi.acm.org/10.1145/360204.360207},
1276 doi = {10.1145/360204.360207},
1277 acmid = {360207},
1278 publisher = {ACM},
1279 address = {New York, NY, USA},
1280}
1281
1282@book{sml:commentary,
1283 author = {Robin Milner and Mads Tofte},
1284 title = {Commentary on Standard {ML}},
1285 publisher = {MIT Press},
1286 address = {Cambridge},
1287 year = 1991
1288}
1289
1290@article{Hyman66,
1291 keywords = {mutual exclusion, software solution, incorrect},
1292 contributer = {pabuhr@plg},
1293 author = {Harris Hyman},
1294 title = {Comments on a Problem in Concurrent Programming Control},
1295 journal = cacm,
1296 month = jan,
1297 year = 1966,
1298 volume = 9,
1299 number = 1,
1300 pages = {45},
1301 note = {Letter to the Editor}
1302}
1303
1304@inproceedings{clos,
1305 keywords = {},
1306 contributer = {gjditchfield@plg},
1307 author = {Linda G. DeMichiel and Richard P. Gabriel},
1308 title = {The Common Lisp Object System: An Overview},
1309 booktitle = {ECOOP '87. European Conference on Object-Oriented Programming},
1310 year = 1987,
1311 pages = {151-170},
1312 publisher = {Springer}
1313}
1314
1315@book{CommonLisp,
1316 keywords = {common lisp},
1317 contributer = {pabuhr@plg},
1318 author = {Guy Steele},
1319 title = {COMMON LISP: The Language},
1320 publisher = {Digital Press},
1321 address = {New York},
1322 year = 1984
1323}
1324
1325@article{CommonLoops,
1326 author = {D. Bobrow and K. Kahn and G. Kiczales and L. Masinter and M. Stefik and F. Zdybel},
1327 title = {CommonLoops: Merging Common Lisp and Object-Oriented Programming},
1328 address = {Portland, Oregon, U.S.A.},
1329 journal = {Proc. ACM Conf. on Object-Oriented Systems, Languages and Applications},
1330 year = 1986,
1331 month = sep,
1332 pages = {17-29},
1333}
1334
1335@article{co-overview,
1336 keywords = {CommonObjects, implementation, encapsulation},
1337 contributer = {gjditchfield@plg},
1338 author = {Alan Snyder},
1339 title = {CommonObjects: An Overview},
1340 journal = sigplan,
1341 year = 1986,
1342 month = oct,
1343 volume = 21,
1344 number = 10,
1345 pages = {19-28},
1346 note = {Object Oriented Programming Workshop}
1347}
1348
1349@article{CSP,
1350 keywords = {CSP, concurrency},
1351 contributer = {pabuhr@plg},
1352 author = {C. A. R. Hoare},
1353 title = {Communicating Sequential Processes},
1354 journal = cacm,
1355 month = aug,
1356 year = 1978,
1357 volume = 21,
1358 number = 8,
1359 pages = {666-677}
1360}
1361
1362@book{Hoare85,
1363 author = {C. A. R. Hoare},
1364 title = {Communicating Sequential Processes},
1365 year = 1985,
1366 isbn = {0-13-153271-5},
1367 publisher = {Prentice-Hall},
1368 address = {Upper Saddle River, NJ, USA},
1369 note = {\href{http://www.usingcsp.com/cspbook.pdf}{http://\-www.usingcsp.com/\-cspbook.pdf}},
1370}
1371
1372@article{Hansen72a,
1373 keywords = {monitors, automatic signal},
1374 contributer = {pabuhr@plg},
1375 author = {Per {Brinch Hansen}},
1376 title = {A Comparison of Two Synchronizing Concepts},
1377 journal = acta,
1378 volume = 1,
1379 year = 1972,
1380 pages = {190-199},
1381}
1382
1383@book{Aho06,
1384 author = {Alfred V. Aho and Monica S. Lam and Ravi Sethi and Jeffrey D. Ullman},
1385 title = {Compilers: Principles, Techniques, and Tools},
1386 edition = {2nd},
1387 year = {2006},
1388 publisher = {Addison-Wesley Longman Publishing},
1389 address = {Boston, MA, USA},
1390}
1391
1392@article{Bacon94,
1393 keywords = {parallelizing compiler},
1394 contributer = {pabuhr@plg},
1395 author = {David F. Bacon and Susan L. Graham and Oliver J. Sharp},
1396 title = {Compiler Transformations for High-Performance Com\-puting},
1397 journal = acmcs,
1398 volume = 26,
1399 number = 4,
1400 month = dec,
1401 year = 1994,
1402 pages = {345-420},
1403}
1404
1405@inproceedings{Berger01,
1406 author = {Emery D. Berger and Benjamin G. Zorn and Kathryn S. McKinley},
1407 title = {Composing High-Performance Memory Allocators},
1408 booktitle = {{SIGPLAN} Conference on Programming Language Design and Implementation},
1409 pages = {114-124},
1410 year = 2001,
1411 url = {http://citeseer.ist.psu.edu/berger01composing.html}
1412}
1413
1414@article{Andrews83,
1415 keywords = {general concurrency},
1416 contributer = {pabuhr@plg},
1417 author = {Gregory R. Andrews and Fred B. Schneider},
1418 title = {Concepts and Notations for Concurrent Programming},
1419 journal = acmcs,
1420 volume = 15,
1421 number = 1,
1422 month = mar,
1423 year = 1983,
1424 pages = {3-43},
1425}
1426
1427@mastersthesis{Mok97,
1428 author = {Wing Yeung Russell Mok},
1429 title = {Concurrent Abnormal Event Handling Mechanisms},
1430 school = {University of Waterloo},
1431 year = 1997,
1432 month = sep,
1433 address = {Waterloo, Ontario, Canada, N2L 3G1},
1434 note = {\href{http://plg.uwaterloo.ca/theses/MokThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-MokThesis.pdf}},
1435}
1436
1437@article{Gehani86,
1438 keywords = {Concurrent programming, C, Distributed systems, rendezvous},
1439 contributer = {dgharriss@plg},
1440 author = {N. H. Gehani and W. D. Roome},
1441 title = {{Concurrent C}},
1442 journal = spe,
1443 volume = 16,
1444 number = 9,
1445 month = sep,
1446 year = 1986,
1447 pages = {821-844},
1448 abstract = {
1449 Our objective is to enhance C so that it can be used to write
1450 concurrent programs that can run efficiently on both single computers
1451 and multicomputers. Our concurrent programming extensions to C are
1452 based on the {\it rendezvous\/} concept. These extensions include
1453 mechanisms for the declaration and creation of processes, for process
1454 synchronization and interaction, for process termination and abortion.
1455 We give a rationale for our decisions and compare Concurrent C
1456 extensions with the concurrent programming facilities in Ada.
1457 Concurrent C has been implemented on the UNIX system running on a
1458 single processor. A distributed version of Concurrent C is being
1459 implemented.
1460 },
1461 comment = {
1462 Select with guarded and screened accepts. Typed processes.
1463 Process-valued expressions and process variables. Processes have
1464 execution priority: Create {\em process-type-name}(args) [with
1465 priority(p)], and the priority can be changed on the fly. Complicated
1466 guard/screen structure on accept: accept {\em transaction}(param names)
1467 [suchthat (exp)] [by (exp)] [compoundstatement]. Accepts cannot
1468 appear in functions! Can specify timeouts on transaction calls.
1469 Code examples: buffer process, dining philosophers, lock manager.
1470 Section on diffs between Concurrent C and Ada.
1471 }
1472}
1473
1474@article{ConcurrentC++,
1475 keywords = {concurrency, C++},
1476 contributer = {pabuhr@plg},
1477 author = {N. H. Gehani and W. D. Roome},
1478 title = {Concurrent {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}: Concurrent Programming with Class(es)},
1479 journal = spe,
1480 month = dec,
1481 year = 1988,
1482 volume = 18,
1483 number = 12,
1484 pages = {1157-1177}
1485}
1486
1487@article{Courtois71,
1488 keywords = {reader and writer, p and v},
1489 contributer = {pabuhr@plg},
1490 author = {P. J. Courtois and F. Heymans and D. L. Parnas},
1491 title = {Concurrent Control with Readers and Writers},
1492 journal = cacm,
1493 volume = 14,
1494 number = 10,
1495 month = oct,
1496 year = 1971,
1497 pages = {667-668},
1498 annote = {
1499 Many errors in the two solutions.
1500 }
1501}
1502
1503@misc{NThreadCode13,
1504 keywords = {N-thread software-solution mutual exclusion},
1505 contributer = {pabuhr@plg},
1506 key = {concurrent locking},
1507 author = {Peter A. Buhr and David Dice and Wim H. Hesselink},
1508 title = {concurrent-locking},
1509 howpublished= {\href{https://github.com/pabuhr/concurrent-locking}{https://\-github.com/\-pabuhr/\-concurrent-locking}},
1510}
1511
1512@incollection{Reppy93,
1513 keywords = {ML, concurrency, continuation passing},
1514 contributer = {pabuhr@plg},
1515 author = {John H. Reppy},
1516 title = {Concurrent {ML}: Design, Application and Semantics},
1517 booktitle = {Functional Programming, Concurrency, Simulation and Automated Reasoning},
1518 editor = {P. E. Lauer},
1519 pages = {165-198},
1520 publisher = {Springer},
1521 address = {Berlin, DE},
1522 year = 1993,
1523 ISBN = {3-540-56883-2},
1524 abstract = {
1525 Concurrent ML (CML) is a high-level language for concurrent
1526 programming. It is an extension of Standard ML (SML) and is implemented
1527 on top of Standard ML of New Jersey (SML/NJ). CML is a practical
1528 language and is being used to build real systems. It demonstrates that
1529 one need not sacrifice high-level notation in order to have good
1530 performance. CML is also a well-defined language. In the tradition of
1531 SML, it has a formal semantics and its type-soundness has been
1532 proven.},
1533 note = {
1534 Proceedings of International Lecture Series 1991-92, McMaster
1535 UniversityLecture Notes in Computer Science 693.},
1536}
1537
1538@article{BLASE-2,
1539 keywords = {concurrency, BLASE-2},
1540 contributer = {pabuhr@plg},
1541 author = {Piyush Mehrotra and John Van Rosendale},
1542 title = {Concurrent Object Access in BLASE~2},
1543 journal = sigplan,
1544 volume = 24,
1545 number = 4,
1546 month = apr,
1547 year = 1989,
1548 pages = {40-42},
1549 note = {Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent Programming,
1550 Sept. 26--27, 1988, San Diego, California, U.S.A},
1551}
1552
1553@techreport{Kafura88,
1554 keywords = {objects, concurrency},
1555 contributer = {pabuhr@plg},
1556 author = {Dennis Kafura},
1557 title = {Concurrent Object-Oriented Real-Time Systems Research},
1558 institution = {Department of Computer Science, Virginia Polytechnic},
1559 number = {TR 88-47},
1560 year = 1988
1561}
1562
1563@article{Buhr92a,
1564 keywords = {C++, concurrency, light-weight process, shared memory},
1565 contributer = {pabuhr@plg},
1566 author = {P. A. Buhr and Glen Ditchfield and R. A. Stroobosscher and B. M. Younger and C. R. Zarnke},
1567 title = {$\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}: Concurrency in the Object-Oriented Language {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
1568 journal = spe,
1569 volume = 22,
1570 number = 2,
1571 month = feb,
1572 year = 1992,
1573 pages = {137-172},
1574}
1575
1576@manual{uC++,
1577 keywords = {C++, concurrency, light-weight process, shared memory},
1578 contributer = {pabuhr@plg},
1579 key = {uC++},
1580 author = {Peter A. Buhr},
1581 title = {$\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Annotated Reference Manual, Version 7.0.0},
1582 organization= {University of Waterloo},
1583 month = sep,
1584 year = 2018,
1585 note = {\href{https://plg.uwaterloo.ca/~usystem/pub/uSystem/uC++.pdf}{https://\-plg.uwaterloo.ca/\-$\sim$usystem/\-pub/\-uSystem/uC++.pdf}},
1586}
1587
1588@book{Burns93,
1589 keywords = {concurrency, Pascal},
1590 contributer = {pabuhr@plg},
1591 author = {Alan Burns and Geoff Davies},
1592 title = {Concurrent Programming},
1593 publisher = {Addison Wesley Longman},
1594 year = 1993,
1595}
1596
1597@article{Hansen73a,
1598 keywords = {monitors},
1599 contributer = {pabuhr@plg},
1600 author = {Per {Brinch Hansen}},
1601 title = {Concurrent Programming Concepts},
1602 journal = spe,
1603 month = dec,
1604 year = 1973,
1605 volume = 5,
1606 number = 4,
1607 pages = {223-245},
1608}
1609
1610@book{Lea97,
1611 keywords = {concurrency, Java},
1612 contributer = {pabuhr@plg},
1613 author = {Doug Lea},
1614 title = {Concurrent Programming in {J}ava: Design Principles and Patterns},
1615 publisher = {Addison-Wesley},
1616 address = {Boston},
1617 year = 1997,
1618 edition = {1st},
1619}
1620
1621@book{Hartley98,
1622 keywords = {concurrency, Java},
1623 contributer = {pabuhr@plg},
1624 author = {Stephen J. Hartley},
1625 title = {Concurrent Programming: The {J}ava Programming Language},
1626 publisher = {Oxford University Press},
1627 year = 1998,
1628 edition = {1st},
1629}
1630
1631@book{Lea00,
1632 keywords = {concurrency, Java},
1633 contributer = {pabuhr@plg},
1634 author = {Doug Lea},
1635 title = {Concurrent Programming in {J}ava: Design Principles and Patterns},
1636 publisher = {Addison-Wesley},
1637 address = {Boston},
1638 year = 2000,
1639 edition = {2nd},
1640}
1641
1642@book{ConcurrentC,
1643 keywords = {concurrency, C},
1644 contributer = {pabuhr@plg},
1645 author = {N. H. Gehani and W. D. Roome},
1646 title = {The {Concurrent C} Programming Language},
1647 publisher = {Silicon Press},
1648 address = {Summit},
1649 year = 1989,
1650}
1651
1652@mastersthesis{Sun15,
1653 author = {Sun, Xianda},
1654 title = {Concurrent High-performance Persistent Hash Table In {J}ava},
1655 school = {School of Computer Sc., University of Waterloo},
1656 year = 2015,
1657 optaddress = {Waterloo, Ontario, Canada, N2L 3G1},
1658 note = {\href{https://uwspace.uwaterloo.ca/handle/10012/10013}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-10013}},
1659}
1660
1661@book{Andrews91:book,
1662 keywords = {concurrency},
1663 contributer = {pabuhr@plg},
1664 author = {Gregory R. Andrews},
1665 title = {Concurrent Programming: Principles and Practice},
1666 publisher = {Benjamin/Cummings Publish\-ing},
1667 address = {Redwood City},
1668 year = 1991,
1669}
1670
1671@article{Buhr05a,
1672 keywords = {concurrency, myths},
1673 contributer = {pabuhr@plg},
1674 author = {Peter A. Buhr and Ashif S. Harji},
1675 title = {Concurrent Urban Legends},
1676 journal = ccpe,
1677 month = aug,
1678 year = 2005,
1679 volume = 17,
1680 number = 9,
1681 pages = {1133-1172},
1682}
1683
1684@mastersthesis{Delisle18,
1685 keywords = {concurrency, Cforall},
1686 contributer = {pabuhr@plg},
1687 author = {Thierry Delisle},
1688 title = {Concurrency in \textsf{C}$\mathbf{\forall}$},
1689 school = {School of Computer Science, University of Waterloo},
1690 year = 2018,
1691 optaddress = {Waterloo, Ontario, Canada, N2L 3G1},
1692 note = {\href{https://uwspace.uwaterloo.ca/handle/10012/12888}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-12888}},
1693}
1694
1695@article{Delisle18b,
1696 keywords = {concurrency, Cforall},
1697 contributer = {pabuhr@plg},
1698 author = {Thierry Delisle and Peter A. Buhr},
1699 title = {Concurrency in \textsf{C}$\mathbf{\forall}$},
1700 year = 2018,
1701 journal = spe,
1702 pages = {1-32},
1703 note = {submitted},
1704}
1705
1706@techreport{Buhr90,
1707 keywords = {objects, concurrency},
1708 contributer = {gjditchfield@plg},
1709 author = {P. A. Buhr and G. J. Ditchfield and B. M. Younger and C. R. Zarnke},
1710 title = {Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
1711 institution = {Department of Computer Science, University of Waterloo},
1712 address = {Waterloo, Ontario, Canada, N2L 3G1},
1713 number = {CS-90-18},
1714 month = may,
1715 year = 1990
1716}
1717
1718@book{Burns98,
1719 keywords = {concurrency, Ada},
1720 author = {Alan Burns and Andy Wellings},
1721 title = {Concurrency in {Ada}},
1722 publisher = {Cambridge University Press},
1723 year = 1998,
1724 edition = {2nd},
1725}
1726
1727@book{Bernstein93,
1728 keywords = {concurrency},
1729 author = {Arthur J. Bernstein and Philip M. Lewis},
1730 title = {Concurrency in Programming and Database Systems},
1731 publisher = {Jones and Bartlett},
1732 year = 1993,
1733}
1734
1735@inproceedings{Pitman01,
1736 keywords = {LISP, exception handling},
1737 contributer = {pabuhr@plg},
1738 author = {Kent M. Pitman},
1739 title = {Condition Handling in the Lisp Language Family},
1740 booktitle = {Exception Handling},
1741 publisher = {Springer},
1742 volume = 2022,
1743 series = {LNCS},
1744 year = 2001,
1745 pages = {39-59}
1746}
1747
1748@inbook{enhancement,
1749 keywords = {bounded polymorphism, Comandos},
1750 contributer = {gjditchfield@plg},
1751 author = {Chris Horn},
1752 title = {Conformace, Genericity, Inheritance and Enhancement},
1753 pages = {223-233},
1754 publisher = {Springer},
1755 year = 1987,
1756 volume = 276,
1757 series = "Lecture Notes in Computer Science",
1758 note = "ECOOP '87 European Conference on Object-Oriented Programming",
1759 summary = {
1760 Considers effect of conformance on Meyer's conclusions in
1761 \cite{polymorphism}.
1762
1763 Implementing a swap function as a member of a type {\cd Swappable}
1764 with {\cd in out Top} parameters doesn't work, because conformance
1765 requires arguments to be of type {\cd Top}.
1766
1767 An enhancive type has a type parameter, bounded by some type, and
1768 defines members. Types conforming to the bound can be passed as
1769 arguments to create types with the extra members. The signature of
1770 the enhanced type is based on the signature of the argument, not the
1771 bound, as if enhancive types were macros. Hence enhanced types do not
1772 necessarily conform to each other. Types conforming to the bound
1773 conform to enhanced types, which allows new functions to be applied
1774 to old types.
1775
1776 Enhancive types are not generic types. If the argument is omitted,
1777 the bound is used as a default. Assignment of enhanced types to
1778 default-enhanced types is allowed (enhanced types conform to the
1779 default-enhanced type). This is (probably) statically type-safe,
1780 because arguments must conform to the bound, and the new members
1781 only use operations defined for the bound.
1782
1783 With facilities for member renaming and deletion, enhancive types
1784 provide the equivalent of constrained generic types.
1785 }
1786}
1787
1788@misc{Taylor10,
1789 keywords = {const, poisoning},
1790 contributer = {pabuhr@plg},
1791 author = {Ian Lance Taylor},
1792 title = {const},
1793 month = oct,
1794 year = 2010,
1795 howpublished= {\href{https://www.airs.com/blog/archives/428}
1796 {https://www.airs.com/\-blog/\-archives/\-428}},
1797}
1798
1799@phdthesis{Ditchfield92,
1800 keywords = {C, parametric polymorphism, overloading},
1801 contributer = {pabuhr@plg},
1802 author = {Glen Jeffrey Ditchfield},
1803 title = {Contextual Polymorphism},
1804 school = {Department of Computer Science, University of Waterloo},
1805 year = 1992,
1806 address = {Waterloo, Ontario, Canada, N2L 3G1},
1807 note = {\href{http://plg.uwaterloo.ca/theses/DitchfieldThesis.pdf}{http://\-plg.uwaterloo.ca/\-theses/\-DitchfieldThesis.pdf}}
1808}
1809
1810@inproceedings{frameworks:HHG90,
1811 keywords = {formal},
1812 contributer = {pabuhr@plg},
1813 author = {Richard Helm and Ian M. Holland and Dipayan Gangopadhyay},
1814 title = {Contracts: Specifying Behavioural Compositions in Cbject-Oriented Systems},
1815 booktitle = {Proceedings of ACM Symposium on Object-Oriented Programming: Systems, Languages and Applications},
1816 year = 1990,
1817 pages = {169-180},
1818}
1819
1820@article{Wand80,
1821 keywords = {concurrency, continuation},
1822 contributer = {pabuhr@plg},
1823 author = {Mitchell Wand},
1824 title = {Continuation-Based Multiprocessing},
1825 publisher = {The Lisp Conference},
1826 journal = {Conference Record of the 1980 Lisp Conference},
1827 pages = {19-28},
1828 year = 1980,
1829}
1830
1831@article{Hieb90,
1832 keywords = {continuations, concurrency},
1833 contributer = {pabuhr@plg},
1834 author = {Robert Hieb and R. Kent Dybvig},
1835 title = {Continuations and Concurrency},
1836 journal = sigplan,
1837 volume = 25,
1838 number = 3,
1839 month = mar,
1840 year = 1990,
1841 pages = {128-136},
1842 note = {Proceedings of the Second ACM SIGPLAN Symposium on Principles \& Practise of Parallel Programming,
1843 March. 14--16, 1990, Seattle, Washington, U.S.A},
1844}
1845
1846@inproceedings{Haynes84,
1847 keywords = {continuations, coroutines, Scheme},
1848 contributer = {pabuhr@plg},
1849 author = {Christopher T. Haynes and Daniel P. Friedman and Mitchell Wand},
1850 title = {Continuations and Coroutines},
1851 booktitle = {Conference Record of the 1984 {ACM} Symposium on Lisp and Functional Programming},
1852 organization= {Association for Computing Machinery},
1853 month = aug,
1854 year = 1984,
1855 pages = {293-298},
1856 abstract = {
1857 The power of first class continuations is demonstrated by implementing
1858 a variety of coroutine mechanisms using only continuations and
1859 functional abstraction. The importance of general abstraction
1860 mechanisms such as continuations is discussed.},
1861}
1862
1863@inproceedings{Zahn74,
1864 keywords = {goto, structured programming},
1865 contributer = {pabuhr@plg},
1866 author = {C. T. Zahn},
1867 title = {Control Statement for Natural Top-down Structured Programming},
1868 booktitle = {Symposium on Programming Languages},
1869 address = {Paris, France},
1870 year = 1974,
1871}
1872
1873@unpublished{Ditchfield:conversions,
1874 contributer = {a3moss@uwaterloo.ca},
1875 author = {Glen Ditchfield},
1876 title = {Conversions for \textsf{C}$\mathbf{\forall}$},
1877 note = {\href{http://plg.uwaterloo.ca/~cforall/Conversions/index.html}{http://\-plg.uwaterloo.ca/\-$\sim$cforall/\-Conversions/\-index.html}},
1878 month = {Nov},
1879 year = {2002},
1880 urldate = {28 July 2016},
1881}
1882
1883@techreport{Dijkstra65,
1884 keywords = {concurrency, Dekker's algorithm, semaphores},
1885 contributer = {pabuhr@plg},
1886 author = {Edsger W. Dijkstra},
1887 title = {Cooperating Sequential Processes},
1888 institution = {Technological University},
1889 address = {Eindhoven, Netherlands},
1890 year = 1965,
1891 note = {Reprinted in \cite{Genuys68} pp. 43--112.}
1892}
1893
1894@book{Marlin80,
1895 keywords = {coroutines},
1896 contributer = {pabuhr@plg},
1897 author = {Christopher D. Marlin},
1898 title = {Coroutines: A Programming Methodology, a Language Design and an Implementation},
1899 publisher = {Springer},
1900 address = {New York},
1901 year = 1980,
1902 volume = 95,
1903 series = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis}
1904}
1905
1906@article{Wang71,
1907 keywords = {coroutines},
1908 contributer = {pabuhr@plg},
1909 author = {Arne Wang and Ole-Johan Dahl},
1910 title = {Coroutine Sequencing in a Block Structured Environment},
1911 journal = "BIT",
1912 volume = 11,
1913 month = nov,
1914 year = 1971,
1915 pages = {425-449},
1916}
1917
1918@article{Castagna95,
1919 keywords = {type-systems, covariance, contravariance},
1920 contributer = {pabuhr@plg},
1921 author = {Giuseppe Castagna},
1922 title = {Covariance and Contravariance : Conflict without a Cause},
1923 journal = toplas,
1924 volume = 17,
1925 number = 3,
1926 month = may,
1927 year = 1995,
1928 pages = {341-447},
1929}
1930
1931@book{Fischer88,
1932 keywords = {compiler construction},
1933 author = {Charles N. Fischer and Richard J. {LeBlanc, Jr.}},
1934 title = {Crafting a Compiler},
1935 publisher = {Benjamin Cummings},
1936 year = 1991,
1937}
1938
1939@misc{CS343,
1940 keywords = {uC++ teaching},
1941 contributer = {pabuhr@plg},
1942 key = {Peter Buhr},
1943 title = {CS343},
1944 year = 2018,
1945 howpublished= {\href{https://www.student.cs.uwaterloo.ca/~cs343}{https://\-www.student.cs.uwaterloo.ca/\-$\sim$cs343}},
1946}
1947
1948@inproceedings{Jim02,
1949 keywords = {C dialect, parametric polymorphic, safe memory allocation},
1950 contributer = {pabuhr@plg},
1951 author = {Trevor Jim and Greg Morrisett and Dan Grossman and Michael Hicks and James Cheney and and Yanling Wang},
1952 title = {{C}yclone: A Safe Dialect of {C}},
1953 booktitle = {USENIX Annual Technical Conference},
1954 organization= {USENIX Association},
1955 address = {Monterey, California, U.S.A.},
1956 month = jun,
1957 year = 2002,
1958 pages = {275-288},
1959}
1960
1961% D
1962
1963@manual{D,
1964 keywords = {D programming language},
1965 contributer = {pabuhr@plg},
1966 title = {{D} Programming Language},
1967 author = {Walter Bright and Andrei Alexandrescu},
1968 organization= {Digital Mars},
1969 year = 2016,
1970 note = {\href{http://dlang.org/spec/spec.html}{http://\-dlang.org/\-spec/\-spec.html}},
1971}
1972
1973@techreport{Cui90,
1974 keywords = {exception handling},
1975 contributer = {pabuhr@plg},
1976 author = {Qian Cui},
1977 title = {Data-Oriented Exception Handling},
1978 institution = {Department of Computer Science, University of Maryland},
1979 address = {College Park, Maryland, U.S.A., 20742},
1980 number = {CS-TR-2384},
1981 month = jan,
1982 year = 1990,
1983}
1984
1985@article{Cui92,
1986 contributer = {rkrische@plg},
1987 author = {Qian Cui and John Gannon},
1988 title = {Data-oriented Exception Handling},
1989 journal = {IEEE Transactions on Software Engineering},
1990 month = may,
1991 year = 1992,
1992 volume = 18,
1993 number = 5,
1994 pages = {393-401},
1995}
1996
1997@manual{SIMULA87,
1998 keywords = {Simula standard},
1999 contributer = {gjditchfield@plg},
2000 title = {Databehandling -- Programspr{\aa}k -- {SIMULA}},
2001 organization= {Standardiseringskommissionen i Sverige},
2002 note = {Svensk Standard SS 63 61 14},
2003 year = 1987,
2004 abstract = {Standard for the programming language SIMULA. Written in English.}
2005}
2006
2007@article{Galil91,
2008 keywords = {union-find},
2009 contributer = {a3moss@uwaterloo.ca},
2010 title = {Data structures and algorithms for disjoint set union problems},
2011 author = {Galil, Zvi and Italiano, Giuseppe F},
2012 journal = {ACM Computing Surveys (CSUR)},
2013 volume = 23,
2014 number = 3,
2015 pages = {319--344},
2016 year = 1991,
2017 publisher = {ACM},
2018}
2019
2020@article{Liskov75,
2021 keywords = {abstract data types, encapsulation, verification},
2022 contributer = {gjditchfield@plg},
2023 author = {Barbara H. Liskov},
2024 title = {Data Types and Program Correctness},
2025 journal = sigplan,
2026 year = 1975,
2027 month = jul,
2028 volume = 10,
2029 number = 7,
2030 pages = {16-17},
2031 summary = {
2032 Type definitions should contain the implementation of the type and
2033 its operations. The grouping makes programs simpler and more
2034 understandable. Encapsulating the definition aids verification and
2035 forces a precise specification of the interface.
2036 }
2037}
2038
2039@article{dtav,
2040 keywords = {Russell, types},
2041 contributer = {gjditchfield@plg},
2042 author = {James Donahue and Alan Demers},
2043 title = {Data Types are Values},
2044 journal = toplas,
2045 month = jul,
2046 year = 1985,
2047 volume = 7,
2048 number = 3,
2049 pages = {426-445},
2050 comment = {
2051 Data types are sets of operations providing interpretations of
2052 values from a meaningless, typeless universal value space. Types
2053 and operations are also contained in this value space.
2054
2055 Functions returning types replace generic types.
2056
2057 Polymorphic functions have type parameters. Evaluation is not
2058 macro expansion:
2059 \begin{verbatim}
2060 R == func [n:val integer; T:type[]] val integer
2061 {if n > 0 => r[n-1, Array[1,10,T]] # n <= 0 => 17 fi}
2062 \end{verbatim}
2063 }
2064}
2065
2066@article{Holt72,
2067 keywords = {concurrency, deadlock},
2068 contributer = {pabuhr@plg},
2069 author = {Richard C. Holt},
2070 title = {Some Deadlock Properties of Computer Systems},
2071 journal = acmcs,
2072 volume = 4,
2073 number = 3,
2074 month = sep,
2075 year = 1972,
2076 pages = {179-196},
2077}
2078
2079@misc{debug-malloc,
2080 keywords = {memory allocation debugger},
2081 contributer = {gjditchfield@plg},
2082 author = {Conor P. Cahill},
2083 title = {debug\_malloc},
2084 howpublished= {comp.sources.unix, volume 22, issue 112},
2085 abstract = {
2086 This package is a collection of routines which are a drop-in
2087 replacement for the malloc(3), memory(3), string(3), and bstring(3)
2088 library functions.
2089 }
2090}
2091
2092@book{sml,
2093 keywords = {},
2094 contributer = {pabuhr@plg},
2095 author = {Robin Milner and Mads Tofte and Robert Harper},
2096 title = {The Definition of Standard {ML}},
2097 publisher = {MIT Press},
2098 address = {Cambridge},
2099 year = 1990
2100}
2101
2102@techreport{sml:old,
2103 keywords = {},
2104 contributer = {gjditchfield@plg},
2105 author = {Robert Harper and Robin Milner and Mads Tofte},
2106 title = {The Definition of Standard {ML}, Version 2},
2107 institution = {Department of Computer Science, University of Edinburgh},
2108 year = 1988,
2109 address = {The King's Buildings, Edinburgh EH9 3JZ},
2110 type = {LFCS Report Series}, month = aug, number = {ECS-LFCS-88-62}
2111}
2112
2113@inproceedings{Reynolds72,
2114 keywords = {continuation},
2115 contributer = {pabuhr@plg},
2116 author = {John Reynolds},
2117 title = {Definitional Interpreters for Higher Order Programming Languages},
2118 booktitle = {ACM Conference Proceedings},
2119 organization= {ACM},
2120 year = 1972,
2121 pages = {717-740}
2122}
2123
2124@article{Buhr16,
2125 keywords = {Dekker's algorithm, software solution, mutual exclusion, performance experiment},
2126 author = {Peter A. Buhr and David Dice and Wim H. Hesselink},
2127 title = {Dekker's Mutual Exclusion Algorithm Made RW-Safe},
2128 journal = ccpe,
2129 volume = 28,
2130 number = 1,
2131 pages = {144-165},
2132 month = jan,
2133 year = 2016,
2134}
2135
2136@misc{steelman,
2137 keywords = {Ada},
2138 contributer = {gjditchfied@plg},
2139 author = {High Order Language Working Group},
2140 title = {Department of Defense Requirements for High Order Computer Programming Languages},
2141 month = jun, year = 1978,
2142 note = {Reprinted in \cite{pldesign}.}
2143}
2144
2145@incollection{Tsay98,
2146 keywords = {local spins, mutual exclusion, read/write atomicity, refinement, scalability},
2147 author = {Yih-Kuen Tsay},
2148 title = {Deriving a scalable algorithm for mutual exclusion},
2149 booktitle = {Distributed Computing},
2150 editor = {Shay Kutten},
2151 volume = {1499},
2152 series = {LNCS},
2153 publisher = {Springer},
2154 address = {Berlin Heidelberg},
2155 year = {1998},
2156 pages = {393-407},
2157}
2158
2159@book{Aho74,
2160 keywords = {algorithms, textbook, union-find},
2161 contributer = {a3moss@uwaterloo.ca},
2162 title = {The Design and Analysis of Computer Algorithms},
2163 author = {Aho, Alfred V and Hopcroft, John E and Ullman, Jeffrey D},
2164 year = {1974},
2165 publisher = {Addison-Wesley},
2166 address = {Reading, MA, USA}
2167}
2168
2169@article{Conway63,
2170 keywords = {coroutine, original},
2171 contributer = {pabuhr@plg},
2172 author = {Melvin E. Conway},
2173 title = {Design of a Separable Transition-Diagram Compiler},
2174 journal = cacm,
2175 month = jul,
2176 year = 1963,
2177 volume = 6,
2178 number = 7,
2179 pages = {396-408},
2180}
2181
2182@book{Stroustrup94,
2183 keywords = {C++},
2184 contributor = {wyrmok@plg},
2185 author = {Bjarne Stroustrup},
2186 title = {The Design and Evolution of {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
2187 publisher = {Addison-Wesley},
2188 address = {Boston},
2189 year = 1994
2190}
2191
2192@inproceedings{st:concurrent,
2193 keywords = {concurrency, Smalltalk, futures},
2194 contributer = {gjditchfield@plg},
2195 author = {Yasuhiko Yokote and Mario Tokoro},
2196 title = {The Design and Implementation of {ConcurrentSmalltalk}},
2197 crossref = "OOPSLA86",
2198 pages = {331-340},
2199 comment = {
2200 Objects are ordinary Smalltalk objects or ``atomic'' objects, which
2201 process messages one at a time in FIFO order. Asynchronous method
2202 calls are made by appending ``\&'' at the call site. The sender does
2203 not wait for a reply. If the method returns a value, it
2204 (immediately?) returns a CBox object, which is like a future. The
2205 sender can send the ``receive'' message to the CBox, which blocks
2206 until the CBox contains a value.
2207
2208 A method can execute the ``\verb|^|'' statement to return an object
2209 and terminate, or it can execute ``\verb|^^|'' to return an object
2210 and continue execution. If ``\verb|^^foo|'' is executed after
2211 ``\verb|^^bar|'', foo is discarded, since bar has already been
2212 returned.
2213
2214 The article does not say whether asynchronous messages can be sent
2215 to ordinary objects, or whether ordinary messages can be sent to
2216 atomic objects.
2217 }
2218}
2219
2220@inproceedings{Ichbiah83,
2221 keywords = {Ada, packages, generics},
2222 contributer = {gjditchfield@plg},
2223 author = {Jean D. Ichbiah},
2224 title = {On the Design of {Ada}},
2225 booktitle = {Information Processing 83},
2226 year = 1983,
2227 month = sep, pages = {1-10},
2228 editor = {R. E. A. Mason},
2229 organization= {IFIP},
2230 publisher = {North-Holland},
2231 summary = {
2232 Packages group related declarations or subprograms, and encapsulate
2233 data types. Separate interfaces and bodies promotes information
2234 hiding by removing the need to scan the body, allows the body to be
2235 confidential, and provides a better specification of the contract
2236 between client and implementor. Generics are an efficient way to
2237 factor out parts of similar definitions.
2238 }
2239}
2240
2241@book{Motet96,
2242 keywords = {Ada, exception handling},
2243 contributer = {wyrmok@plg},
2244 author = {G. Motet and A. Mapinard and J. C. Geoffroy},
2245 title = {Design of Dependable {A}da Software},
2246 publisher = {Prentice-Hall},
2247 address = {Englewood Cliffs},
2248 year = 1996,
2249}
2250
2251@article{Richardson93,
2252 keywords = {C++, persistence, database},
2253 contributer = {pabuhr@plg},
2254 author = {Joel E. Richardson and Michael J. Carey and Daniel T. Schuh},
2255 title = {The Design of the {E} Programming Language},
2256 journal = toplas,
2257 month = jul,
2258 year = 1993,
2259 volume = 15,
2260 number = 3,
2261 pages = {494-534},
2262}
2263
2264@article{Hansen81b,
2265 keywords = {concurrency, monitor, critical region},
2266 contributer = {pabuhr@plg},
2267 author = {Per {Brinch Hansen}},
2268 title = {The Design of {E}dison},
2269 journal = spe,
2270 volume = 11,
2271 number = 4,
2272 month = apr,
2273 year = 1981,
2274 pages = {363-396},
2275}
2276
2277@book{Gamma95,
2278 keywords = {design patterns},
2279 author = {Erich Gamma and Richard Helm and Ralph Johnson and John Vlissides},
2280 title = {Design Patterns: Elements of Reusable Object-Oriented Software},
2281 publisher = {Addison-Wesley},
2282 address = {Boston},
2283 year = 1995,
2284 series = {Professional Computing Series},
2285}
2286
2287@inproceedings{Wirth74,
2288 keywords = {},
2289 contributer = {gjditchfield@plg},
2290 author = {Niklaus Wirth},
2291 title = {On the Design of Programming Languages},
2292 booktitle = {Information Processing 74},
2293 year = 1974,
2294 pages = {386-393},
2295 publisher = {North Holland Publishing Company},
2296 note = {Reprinted in \cite{pldesign}.}
2297}
2298
2299@techreport{forceone,
2300 keywords = {Parametric polymorphism, ForceOne},
2301 contributer = {gjditchfield@plg},
2302 author = {Andrew K. Wright},
2303 title = {Design of the Programming Language {ForceOne}},
2304 institution = {University of Waterloo},
2305 month = feb, year = 1987,
2306 number = {CS-87-10}
2307}
2308
2309@techreport{x-2,
2310 keywords = {object based},
2311 contributer = {gjditchfield@plg},
2312 author = {David W. Sandberg},
2313 title = {The Design of the Programming Language {X-2}},
2314 institution = {Oregon State University},
2315 year = 1985,
2316 address = {Department of Computer Science, Corvallis, Oregon, 97331},
2317 number = {85-60-1}
2318}
2319
2320@article{design,
2321 keywords = {Smalltalk, designing classes},
2322 contributer = {gjditchfield@plg},
2323 author = {Ralph E. Johnson and Brian Foote},
2324 title = {Designing Reusable Classes},
2325 journal = joop,
2326 year = 1988,
2327 volume = 1, number = 2, 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{Pierce00,
4291 keywords = {Scala},
4292 contributer = {a3moss@uwaterloo.ca},
4293 author = {Pierce, Benjamin C. and Turner, David N.},
4294 title = {Local Type Inference},
4295 journal = {ACM Trans. Program. Lang. Syst.},
4296 issue_date = {Jan. 2000},
4297 volume = {22},
4298 number = {1},
4299 month = jan,
4300 year = {2000},
4301 issn = {0164-0925},
4302 pages = {1--44},
4303 numpages = {44},
4304 url = {http://doi.acm.org/10.1145/345099.345100},
4305 doi = {10.1145/345099.345100},
4306 acmid = {345100},
4307 publisher = {ACM},
4308 address = {New York, NY, USA},
4309 keywords = {polymorphism, subtyping, type inference},
4310}
4311
4312@article{Sundell08,
4313 keywords = {lock free, deque},
4314 contributer = {pabuhr@plg},
4315 author = {H{\r{a}}kan Sundell and Philippas Tsigas},
4316 title = {Lock-free Deques and Doubly Linked Lists},
4317 journal = {J. Parallel Distrib. Comput.},
4318 volume = 68,
4319 number = 7,
4320 year = 2008,
4321 pages = {1008-1020},
4322}
4323
4324@misc{Matsakis17,
4325 keywords = {Rust, Chalk, PROLOG},
4326 contributer = {a3moss@uwaterloo.ca},
4327 author = {Nicholas Matsakis},
4328 title = {Lowering {Rust} traits to logic},
4329 month = jan,
4330 year = 2017,
4331 howpublished= {\href{http://smallcultfollowing.com/babysteps/blog/2017/01/26/lowering-rust-traits-to-logic/}
4332 {http://smallcultfollowing.com/\-babysteps/\-blog/\-2017/\-01/\-26/\-lowering-rust-traits-to-logic/}},
4333 optnote = {Accessed: 2019-01},
4334}
4335
4336@article{Cormack89,
4337 keywords = {parsing, LR, error recovery},
4338 contributer = {pabuhr@plg},
4339 author = {Gordon V. Cormack},
4340 title = {An {LR} Substring Parser for Noncorrecting Syntax Error Recovery},
4341 journal = sigplan,
4342 volume = 24,
4343 number = 7,
4344 month = jul,
4345 year = 1989,
4346 pages = {161-169},
4347 note = {Proceedings of the {SIGPLAN}~'89 Conference on Programming Language Design and Implementation}
4348}
4349
4350@manual{Lua,
4351 keywords = {Lua},
4352 contributer = {pabuhr@plg},
4353 author = {Lua},
4354 title = {Lua 5.3 Reference Manual},
4355 address = {\href{https://www.lua.org/manual/5.3}{https://\-www.lua.org/\-manual/\-5.3}},
4356 year = 2018,
4357}
4358
4359% M
4360
4361@book{M68K,
4362 keywords = {M680XX, Motorola},
4363 contributer = {pabuhr@plg},
4364 key = {Motorola},
4365 title = {M68000 Family Programmer's Reference Manual},
4366 publisher = {Motorola},
4367 year = 1992,
4368}
4369
4370@misc{Haberman16,
4371 keywords = {C++ template expansion},
4372 contributer = {a3moss@uwaterloo.ca},
4373 author = {Josh Haberman},
4374 title = {Making arbitrarily-large binaries from fixed-size {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} code},
4375 year = 2016,
4376 howpublished= {\href{http://blog.reverberate.org/2016/01/making-arbitrarily-large-binaries-from.html}
4377 {
4378 {http://blog.reverberate.org/\-2016/\-01/\-making-arbitrarily-large-binaries-from.html}
4379 }},
4380 optnote = {Accessed: 2016-09},
4381}
4382
4383@article{c++libs,
4384 keywords = {directory structure},
4385 contributer = {gjditchfield@plg},
4386 author = {J. M. Coggins and G. Bollella},
4387 title = {Managing {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Libraries},
4388 journal = sigplan,
4389 year = 1989,
4390 month = jun, volume = 24, number = 6, pages = {37-48},
4391 abstract = {
4392 This paper describes a scheme we have used to manage a large
4393 library written in the C++ language. The scheme imposes a
4394 directory structure, and represents dependency hierarchy in a
4395 globally accessible file we call the 'prelude' file. We also
4396 discuss the structure of the description files (makefiles) used
4397 with the UNIX options we have found to be useful in reducing the
4398 size of the library, and how to minimize recompilation time after
4399 trivial changes to the source code of the library.
4400 }
4401}
4402
4403@inproceedings{mprof,
4404 keywords = {malloc},
4405 contributer = {gjditchfield@plg},
4406 author = {Benjamin Zorn and Paul Hilfinger},
4407 title = {A Memory Allocation Profiler for {C} and Lisp Programs},
4408 booktitle = {Summer 1988 {USENIX} proceedings},
4409 year = 1988
4410}
4411
4412@manual{MMTk,
4413 keywords = {Java memory management},
4414 contributer = {pabuhr@plg},
4415 title = {MMTk: The Memory Management Toolkit},
4416 author = {Steve Blackburn and Robin Garner and Daniel Frampton},
4417 month = sep,
4418 year = 2006,
4419 note = {\textsf{http://cs.anu.edu.au/\-$\sim$Robin.Garner/\-mmtk-guide.pdf}},
4420}
4421
4422@article{Adve10,
4423 keywords = {Java memory management},
4424 contributer = {pabuhr@plg},
4425 author = {Sarita V. Adve and Hans-J. Boehm},
4426 title = {Memory Models: A Case for Rethinking Parallel Languages and Hardware},
4427 journal = cacm,
4428 volume = 53,
4429 number = 8,
4430 month = aug,
4431 year = 2010,
4432 pages = {90-101},
4433 publisher = {ACM},
4434 address = {New York, NY, USA},
4435}
4436@techreport{Mesa,
4437 keywords = {monitors, packages},
4438 contributer = {pabuhr@plg},
4439 author = {James G. Mitchell and William Maybury and Richard Sweet},
4440 title = {Mesa Language Manual},
4441 institution = {Xerox Palo Alto Research Center},
4442 number = {CSL--79--3},
4443 month = apr,
4444 year = 1979
4445}
4446
4447@article{Andrews89,
4448 keywords = {semaphore, split-binary, baton},
4449 contributer = {pabuhr@plg},
4450 author = {Gregory R. Andrews},
4451 title = {A Method for Solving Synronization Problems},
4452 journal = scp,
4453 volume = 13,
4454 number = 4,
4455 month = dec,
4456 year = 1989,
4457 pages = {1-21},
4458}
4459
4460@inproceedings{Mitchell78,
4461 keywords = {Mesa},
4462 contributer = {pabuhr@plg},
4463 author = {James G. Mitchell},
4464 title = {Mesa: A Designer's User Perspective},
4465 booktitle = {Spring CompCom 78},
4466 organization= {Sixteenth IEEE Computer Society International Conference},
4467 address = {San Francisco, California, U.S.A.},
4468 month = feb,
4469 year = 1978,
4470 pages = {36-39},
4471 note = {IEEE Catalog No. 78CH1328-4C},
4472}
4473
4474@article{Gentleman81,
4475 keywords = {messages, concurrency},
4476 contributer = {pabuhr@plg},
4477 author = {W. Morven Gentleman},
4478 title = {Message Passing between Sequential Processes:
4479 the Reply Primitive and the Administrator Concept},
4480 journal = spe,
4481 month = may,
4482 year = 1981,
4483 volume = 11,
4484 number = 5,
4485 pages = {435-466}
4486}
4487
4488@article{Cormack88,
4489 keywords = {concurrency},
4490 contributer = {pabuhr@plg},
4491 author = {G. V. Cormack},
4492 title = {A Micro Kernel for Concurrency in C},
4493 journal = spe,
4494 month = may,
4495 year = 1988,
4496 volume = 18,
4497 number = 4,
4498 pages = {485-491}
4499}
4500
4501@article{Buhr90a,
4502 keywords = {concurrency, light-weight process, shared memory},
4503 contributer = {pabuhr@plg},
4504 author = {Peter A. Buhr and Richard A. Stroobosscher},
4505 title = {The $\mu${S}ystem: Providing Light-Weight Concurrency on Shared-Memory Multiprocessor Computers Running {UNIX}},
4506 journal = spe,
4507 volume = 20,
4508 number = 9,
4509 month = sep,
4510 year = 1990,
4511 pages = {929-963},
4512}
4513
4514@techreport{uSystem,
4515 keywords = {C, concurrency, light-weight process, shared memory},
4516 contributer = {pabuhr@plg},
4517 author = {Peter A. Buhr and Hamish I. Macdonald and Richard A. Stroobosscher},
4518 title = {$\mu${S}ystem Annotated Reference Manual, Version 4.4.3},
4519 institution = {Department of Computer Science, University of Waterloo},
4520 address = {Waterloo, Ontario, Canada, N2L 3G1},
4521 month = sep,
4522 year = 1994,
4523 note = {\href{https://plg.uwaterloo.ca/~usystem/pub/uSystem/uSystem.pdf}{https://\-plg.uwaterloo.ca/\-$\sim$usystem/\-pub/\-uSystem/\-uSystem.pdf}},
4524}
4525
4526@book{Mips4000,
4527 key = {Mips4000},
4528 title = {MIPS R4000 Microprocessor User's Manual},
4529 publisher = {MIPS Computer Systems Inc},
4530 year = 1991,
4531}
4532
4533@inproceedings{Mjolner,
4534 keywords = {Mjolner, hierarchical windows},
4535 contributer = {pabuhr@plg},
4536 author = {G\"{o}rel Hedin and Boris Magnusson},
4537 title = {The Mj{\o}lner Environment: Direct Interaction with Abstractions},
4538 booktitle = {Proceedings of the European Conference on Object Oriented Programming},
4539 organization= {ECOOP'88},
4540 publisher = {Springer},
4541 volume = 322,
4542 editor = {S. Gjessing and K. Nygaard},
4543 address = {Oslo, Norway},
4544 month = aug,
4545 year = 1988,
4546 pages = {41-54},
4547 note = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
4548}
4549
4550@article{Skillicorn98,
4551 keywords = {parallel models},
4552 contributer = {pabuhr@plg},
4553 author = {David B. Skillicorn and Domenico Talia},
4554 title = {Models and Languages for Parallel Computation},
4555 journal = acmcs,
4556 volume = 30,
4557 number = 2,
4558 month = jun,
4559 year = 1998,
4560 pages = {123-169},
4561}
4562
4563@article{Werther96,
4564 keywords = {C++, language syntax},
4565 contributer = {pabuhr@plg},
4566 author = {Ben Werther and Damian Conway},
4567 title = {A Modest Proposal: {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Resyntaxed},
4568 journal = sigplan,
4569 volume = 31,
4570 number = 11,
4571 month = nov,
4572 year = 1996,
4573 pages = {74-82},
4574}
4575
4576@book{Alexandrescu01,
4577 keywords = {c design-patterns programming},
4578 contributer = {pabuhr@plg},
4579 author = {Andrei Alexandrescu},
4580 title = {Modern C++ Design: Generic Programming and Design Patterns Applied},
4581 publisher = {Addison-Wesley Professional},
4582 address = {Boston},
4583 month = feb,
4584 year = 2001,
4585 isbn = {0201704315},
4586}
4587
4588@book{Tanenbaum92,
4589 keywords = {concurrency, operating systems},
4590 contributer = {pabuhr@plg},
4591 author = {Andrew S. Tanenbaum},
4592 title = {Modern Operating Systems},
4593 publisher = {Prentice-Hall},
4594 address = {Englewood Cliffs},
4595 year = 1992,
4596}
4597
4598@article{Wirth77,
4599 keywords = {modules, coroutines},
4600 contributer = {pabuhr},
4601 author = {Niklaus Wirth},
4602 title = {Modula: a Language for Modular Multiprogramming},
4603 journal = spe,
4604 month = {January--February},
4605 year = 1977,
4606 volume = 7,
4607 number = 1,
4608 pages = {3-35},
4609}
4610
4611@book{Harbison92,
4612 contributer = {mhcoffin},
4613 author = {Samuel P. Harbison},
4614 title = {Modula-3},
4615 publisher = {Prentise Hall, Inc.},
4616 year = {1992},
4617 comment = {This is a textbook for learning Modula-3.}
4618}
4619
4620@techreport{Modula-3:old,
4621 keywords = {Modula-3, inheritance, type extension},
4622 contributer = {gjditchfield@plg},
4623 author = {Luca Cardelli and James Donahue and Lucille Glassman and Mick
4624 Jordan and Bill Kalsow and Greg Nelson},
4625 title = {Modula-3 Report},
4626 institution = {Systems Research Center},
4627 address = {130 Lytton Avenue, Palo Alto, California 94301},
4628 month = aug,
4629 year = 1988,
4630 number = 31
4631}
4632
4633@article{Dueck90,
4634 keywords = {attribute grammars},
4635 contributer = {pabuhr@plg},
4636 author = {Gerald D. P. Dueck and Gordon V. Cormack},
4637 title = {Modular Attribute Grammars},
4638 journal = {The Computer Journal},
4639 month = apr,
4640 year = 1990,
4641 volume = 33,
4642 number = 2,
4643 pages = {164-172},
4644}
4645
4646@article{Yemini85,
4647 keywords = {exception handling},
4648 contributer = {pabuhr@plg},
4649 author = {Shaula Yemini and Daniel M. Berry},
4650 title = {A Modular Verifiable Exception-Handling Mechanism},
4651 journal = toplas,
4652 month = apr,
4653 year = 1985,
4654 volume = 7,
4655 number = 2,
4656 pages = {214-243},
4657}
4658
4659@article{Buhr95b,
4660 keywords = {concurrency, monitors, classification},
4661 contributer = {pabuhr@plg},
4662 author = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
4663 title = {Monitor Classification},
4664 journal = acmcs,
4665 volume = 27,
4666 number = 1,
4667 month = mar,
4668 year = 1995,
4669 pages = {63-107},
4670}
4671
4672@article{Hoare74,
4673 keywords = {monitor},
4674 contributer = {pabuhr@plg},
4675 author = {C. A. R. Hoare},
4676 title = {Monitors: An Operating System Structuring Concept},
4677 journal = cacm,
4678 volume = 17,
4679 number = 10,
4680 month = oct,
4681 year = 1974,
4682 pages = {549-557},
4683 annote = {
4684 }
4685}
4686
4687@inbook{Buhr99a,
4688 keywords = {concurrency, monitors, classification},
4689 contributer = {pabuhr@plg},
4690 author = {Peter A. Buhr and Michel Fortier and Michael H. Coffin},
4691 title = {Encyclopedia of Computer Science and Technology},
4692 chapter = {Monitor Taxonomy},
4693 publisher = {Marcel Dekker, Inc},
4694 volume = {40, supplement 25},
4695 year = 1999,
4696 pages = {191-212},
4697}
4698% editor = {Allen Kent and James G. Williams},
4699
4700@incollection{MPC,
4701 keywords = {user-level threading},
4702 contributer = {pabuhr@plg},
4703 author = {Marc P\'erache and Herv\'e Jourdren and Raymond Namyst},
4704 title = {MPC: A Unified Parallel Runtime for Clusters of {NUMA} Machines},
4705 booktitle = {Euro-Par 2008},
4706 pages = {329-342},
4707 publisher = {Springer},
4708 address = {Berlin, Heidelberg},
4709 year = 2008,
4710 volume = 5168,
4711 series = {Lecture Notes in Computer Science},
4712}
4713
4714@manual{MPI,
4715 keywords = {MPI},
4716 contributer = {pabuhr@plg},
4717 title = {MPI: A Message-Passing Interface Standard, Version 3.1},
4718 organization= {Message Passing Interface Forum},
4719 address = {University of Tennessee, Knoxville, Tennessee},
4720 month = jun,
4721 year = 2015,
4722 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}},
4723}
4724
4725@article{multilisp,
4726 keywords = {futures, scheme},
4727 contributer = {gjditchfield@plg},
4728 author = {Halstead, Jr.,Robert H.},
4729 title = {Multilisp: A Language for Concurrent Symbolic Programming},
4730 journal = toplas,
4731 volume = 7,
4732 number = 4,
4733 pages = {501-538},
4734 month = oct,
4735 year = 1985,
4736 comment = {
4737 (future E) begins evaluating the expression E, and
4738 returns a ``future'' representing the value. When evaluation is
4739 finished, the value of E replaces the future. Operations that need
4740 the future's value suspend until it is available. Assignment and
4741 parameter passing do not suspend. Future introduces concurrency
4742 between the calculation of a value and its use; reference to
4743 futures is a synchronization mechanism.
4744
4745 (pcall F A B ... C) concurrently evaluates F, A, B, ... C, and then
4746 applies F to the arguments. pcall can be built from future and a
4747 ``touch'' operation. pcall is included because it may not be easy
4748 to determine that there are no critical sections between the future
4749 expression and the code between the future call and the value's
4750 first use.
4751
4752 (delay E) is like future, but E's process does not begin until its
4753 value is needed. It provides lazy evaluation. Replacing delay
4754 with future would launch an infinite number of processes.
4755 }
4756}
4757
4758@techreport{Bretthauer89,
4759 keywords = {multiple inheritance},
4760 contributer = {pabuhr@plg},
4761 author = {Harry Bretthauer and Thomas Christaller and J\"{u}rgen Kopp},
4762 title = {Multiple vs. Single Inheritance in Object-oriented Programming Languages. What do we really want?},
4763 institution = {Gesellschaft F\"{u}r Mathematik und Datenverarbeitung mbH},
4764 address = {Schlo$\beta$ Birlinghoven, Postfach 12 40, D-5205 Sankt Augustin 1, Deutschland},
4765 number = {Arbeitspapiere der GMD 415},
4766 month = nov,
4767 year = 1989,
4768}
4769
4770@inproceedings{c++:multinh,
4771 keywords = {C++, multiple inheritance, implementation},
4772 contributer = {gjditchfield@plg},
4773 author = {Bjarne Stroustrup},
4774 title = {Multiple Inheritance for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
4775 booktitle = {Proceedings of the Spring '87 EUUG Conference},
4776 month = may, year = 1987
4777}
4778
4779@inproceedings{st:mult,
4780 keywords = {smalltalk, multiple inheritance, implementation},
4781 contributer = {gjditchfield@plg},
4782 author = {Daniel H. H. Ingalls and A. H. Borning},
4783 title = {Multiple Inheritance in Smalltalk-80},
4784 booktitle = {Proceedings of the National Conference on Artificial Intelligence},
4785 month = aug,
4786 year = 1982,
4787 pages = {234-238},
4788 organization= {American Association for Artificial Intelligence},
4789 comment = {
4790 Methods are looked up in the current class, the superclasses, the
4791 supersuperclasses, etc. The same method can be inherited
4792 repeatedly, but having different methods for the same message is an
4793 error. Only one copy is made for multiply-inherited fields.
4794
4795 {\tt X.m} is the method m in superclass X. {\tt super.m} is
4796 allowed if there is no ambiguity; {\tt self super.m} replaces {\tt
4797 super m}. {\tt all.m} invokes all inherited versions of m.
4798
4799 Methods on the first-superclass chain are found as usual. Methods
4800 from other superclasses are copied into the class dictionary. An
4801 error method is created if inherited methods conflict. The parser
4802 is changed to allow compound selectors. {\tt Object
4803 messageNotUnderstood} is changed to look for compound selectors and
4804 dynamically add a method with the right name and body to the class.
4805 When methods are edited, they are copied into subclasses and
4806 compound selector versions are deleted, as appropriate.
4807 }
4808}
4809
4810@article{Lamport86I,
4811 keywords = {software solutions, N-thread, mutual exclusions},
4812 contributer = {pabuhr@plg},
4813 author = {Leslie Lamport},
4814 title = {The Mutual Exclusion Problem: Part\,{I}--A Theory of Interprocess Communication},
4815 journal = jacm,
4816 volume = 33,
4817 number = 2,
4818 month = apr,
4819 year = 1986,
4820 pages = {313--326},
4821 numpages = {14},
4822 publisher = {ACM},
4823 address = {New York, NY, USA},
4824}
4825
4826@article{Lamport86II,
4827 keywords = {software solutions, N-thread, mutual exclusions},
4828 contributer = {pabuhr@plg},
4829 author = {Leslie Lamport},
4830 title = {The Mutual Exclusion Problem: Part\,{II}--Statement and Solutions},
4831 journal = jacm,
4832 volume = 33,
4833 number = 2,
4834 month = apr,
4835 year = 1986,
4836 pages = {327--348},
4837 numpages = {22},
4838 publisher = {ACM},
4839 address = {New York, NY, USA},
4840}
4841
4842@article{Burns78,
4843 keywords = {hardware, N-process solution, O(N)},
4844 contributer = {pabuhr@plg},
4845 author = {James E. Burns},
4846 title = {Mutual Exclusion with Linear Waiting Using Binary Shared Variables},
4847 journal = {SIGACT News},
4848 volume = 10,
4849 number = 2,
4850 month = {Summer},
4851 year = 1978,
4852 pages = {42-47},
4853}
4854
4855@inproceedings{Burns80,
4856 keywords = {N-process software solution},
4857 contributer = {pabuhr@plg},
4858 author = {James E. Burns and Nancy A. Lynch},
4859 title = {Mutual Exclusion using Indivisible Reads and Writes},
4860 booktitle = {Proceedings of the 18th Annual Allerton Conference on Communications, Control and Computing, Monticello, Illinois, USA},
4861 year = 1980,
4862 pages = {833-842},
4863 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]},
4864 optnote = {\textsf{http://\-groups.csail.mit.edu/\-tds/\-papers/\-Lynch/\-allertonconf.pdf}},
4865}
4866
4867@article{Peterson81,
4868 keywords = {concurrency, critical section},
4869 contributer = {pabuhr@plg},
4870 author = {G. L. Peterson},
4871 title = {Myths About the Mutual Exclusion Problem},
4872 journal = ipl,
4873 year = 1981,
4874 month = jun,
4875 volume = 12,
4876 number = 3,
4877 pages = {115-116},
4878}
4879
4880% N
4881
4882@techreport{Drepper03,
4883 keywords = {NPTL, threading, 1:1 model},
4884 contributer = {pabuhr@plg},
4885 author = {Ulrich Drepper and Ingo Molnar},
4886 title = {The Native POSIX Thread Library for Linux},
4887 institution = {Red Hat},
4888 year = 2003,
4889 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}},
4890}
4891
4892@article{Haddon77,
4893 keywords = {monitors, nested monitor calls},
4894 contributer = {pabuhr@plg},
4895 author = {Bruce K. Haddon},
4896 title = {Nested Monitor Calls},
4897 journal = osr,
4898 volume = 11,
4899 number = 4,
4900 month = oct,
4901 year = 1977,
4902 pages = {18-23},
4903}
4904
4905@inproceedings{nesting,
4906 keywords = {},
4907 contributer = {gjditchfield@plg},
4908 author = {Lori A. Clarke and Jack C. Wilenden and Alexander L. Wolf},
4909 title = {Nesting in {Ada} Programs is for the Birds},
4910 booktitle = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada}
4911 Programming Language},
4912 year = 1980,
4913 month = dec, pages = {139-145},
4914 note = {SIGPLAN Notices, v. 15, n. 11},
4915 abstract = {
4916 Given a data abstraction construct like the Ada package and in the
4917 light of current thoughts on programming methodology, we feel that
4918 nesting is an anachronism. In this paper we propose a nest-free
4919 program style for Ada that eschews nested program units and
4920 declarations within blocks and instead heavily utilizes packages
4921 and context specifications as mechanisms for controlling
4922 visibility. We view this proposal as a first step toward the
4923 development of programming methods that exploit the novel language
4924 features available in Ada. Consideration of this proposal's
4925 ramifications for data flow, control flow, and overall program
4926 structure substantiates our contention that a tree structure is
4927 seldom a natural representation of a program and that nesting
4928 therefore generally interferes with program development and
4929 readability.
4930 }
4931}
4932
4933@inproceedings{Buhr88,
4934 keywords = {nested classes, persistence},
4935 contributer = {pabuhr@plg},
4936 author = {P. A. Buhr and C. R. Zarnke},
4937 title = {Nesting in an Object Oriented Language is NOT for the Birds},
4938 booktitle = {Proceedings of the European Conference on Object Oriented Programming},
4939 publisher = {Springer},
4940 volume = 322,
4941 editor = {S. Gjessing and K. Nygaard},
4942 address = {Oslo, Norway},
4943 month = aug,
4944 year = 1988,
4945 pages = {128-145},
4946 note = {Lecture Notes in Computer Science, Ed. by G. Goos and J. Hartmanis},
4947}
4948
4949@inproceedings{Thompson90new,
4950 keywords = {Plan 9},
4951 contributer = {pabuhr@plg},
4952 title = {A New {C} Compiler},
4953 author = {Ken Thompson},
4954 booktitle = {Proceedings of the Summer 1990 UKUUG Conference},
4955 year = 1990,
4956 pages = {41-51},
4957 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}},
4958}
4959
4960@article{Trono94,
4961 author = {John A. Trono},
4962 title = {A New Exercise in Concurrency},
4963 journal = {SIGCSE Bulletin},
4964 volume = {26},
4965 number = {3},
4966 month = sep,
4967 year = {1994},
4968 pages = {8-10},
4969 publisher = {ACM},
4970 address = {New York, NY, USA},
4971}
4972
4973@article{Anderson01,
4974 keywords = {software solutions, fast path},
4975 contributer = {pabuhr@plg},
4976 author = {James H. Anderson and Yong-Jik Kim},
4977 title = {A New Fast-Path Mechanism For Mutual Exclusion},
4978 journal = {Distributed Computing},
4979 month = jan,
4980 year = 2001,
4981 volume = 14,
4982 number = 1,
4983 pages = {17-29},
4984}
4985
4986@article{Lamport74,
4987 keywords = {concurrency, N-Process solution, O(N)},
4988 contributer = {pabuhr@plg},
4989 author = {Leslie Lamport},
4990 title = {A New Solution of Dijkstra's Concurrent Programming Problem},
4991 journal = cacm,
4992 month = aug,
4993 year = 1974,
4994 volume = 17,
4995 number = 8,
4996 pages = {453-455},
4997}
4998
4999@book{NeWS,
5000 AUTHOR = {James Gosling and David S. H. Rosenthal and Richelle J. Arden},
5001 TITLE = {The {NeWS} Book},
5002 PUBLISHER = {Springer-Verlag},
5003 YEAR = {1989}
5004}
5005
5006@article{landin,
5007 keywords = {},
5008 contributer = {gjditchfield@plg},
5009 author = {P. J. Landin},
5010 title = {The Next 700 Programing Languages},
5011 journal = cacm,
5012 year = 1966,
5013 volume = 9,
5014 pages = {157-164},
5015}
5016
5017@misc{nginx,
5018 key = {nginx},
5019 author = {{NGINX}},
5020 howpublished= {\href{https://www.nginx.com}{https://\-www.nginx.com}},
5021}
5022
5023@article{Herlihy05,
5024 keywords = {Multiprocessors, concurrent data structures, dynamic data structures, memory management, nonblocking synchronization},
5025 contributer = {pabuhr@plg},
5026 author = {Maurice Herlihy and Victor Luchangco and Paul Martin and Mark Moir},
5027 title = {Nonblocking Memory Management Support for Dynamic-sized Data Structures},
5028 journal = tocs,
5029 volume = 23,
5030 number = 2,
5031 month = may,
5032 year = 2005,
5033 pages = {146-196},
5034 numpages = {51},
5035 publisher = {ACM},
5036 address = {New York, NY, USA},
5037}
5038
5039% O
5040
5041@inproceedings{oop:abcl/1,
5042 keywords = {concurrency, OOPL, futures},
5043 contributer = {gjditchfield@plg},
5044 author = {Akinori Yonezawa and Jean-Pierre Briot and Etsuya Shibayama},
5045 title = {Object-Oriented Concurrent Programming in {ABCL/1}},
5046 crossref = "OOPSLA86",
5047 pages = {258-268},
5048 comment = {
5049 Actions for messages sent to an object are executed concurrently
5050 iff the object has no members. A select construct specifies a set
5051 of message patterns.
5052
5053 Express messages have priority. If an express message arrives
5054 while an ordinary message is being processed, the action for the
5055 ordinary message is suspended or aborted and the action for the
5056 express message is executed. The sender decides which class a
5057 message belongs in. Non-interruptible sections can be defined.
5058
5059 Message sends can be non-blocking, or can block until a reply is
5060 received, at the sender's option. The receiver can continue to
5061 execute after sending the reply.
5062
5063 Replies can send back ``futures'', and put values in them later.
5064 Futures are queues of values, not single values. The caller can
5065 use a ``ready?'' predicate to test for empty queue, or can use
5066 operations to get the first or all queue elements; these operations
5067 block if the queue is empty.
5068 }
5069}
5070
5071@techreport{Schmidt95,
5072 keywords = {ACE, concurrency, library},
5073 contributer = {pabuhr@plg},
5074 author = {Douglas C. Schmidt},
5075 title = {An OO Encapsulation of Lightweight OS Concurrency Mechanisms in the {ACE} Toolkit},
5076 institution = {Washington University in St. Louis},
5077 year = 1995,
5078 number = 31,
5079 note = {{\small\textsf{http://\-www.cs.wustl.edu/\-$\sim$schmidt/\-PDF/\-IPC\_SAP-92.pdf}}},
5080}
5081
5082@inproceedings{OOEx,
5083 keywords = {Exceptions, object-oriented programming languages},
5084 contributer = {gjditchfield@plg},
5085 author = {Christophe Dony},
5086 title = {An Object-oriented Exception Handling System for an Object-oriented Language},
5087 booktitle = {ECOOP '88. European Conference on Object-Oriented Programming},
5088 year = 1988,
5089 pages = {146-161},
5090 editor = {S. Gjessing and K. Nygaard},
5091 organization= {DND, The Norwegian Computer Society},
5092 publisher = {Springer},
5093 comment = {
5094 Objectives:
5095 - Users can define new exceptions.
5096 - Default handlers can be attached to exceptions.
5097 - Handlers can be attached to classes.
5098 - Handlers can be attached to dynamic entities (expressions).
5099 - Exceptions propagate first along the invocation chain.
5100 - Exceptions should be hierarchically organized classes.
5101 - Handlers should take into account the exception hierarchy (i.e.,
5102 should handle raising of sub-exceptions).
5103 The ``exceptional-event'' class has two subclasses. ``Warning''
5104 has a ``resume'' method, and ``error'' has ``exit'' and
5105 ``retry'' methods. Signalling an exception creates an instance
5106 of the exception, whose members are used to pass information
5107 back to the handler. Handlers are instances of class
5108 ``protect-handler'' with a method ``protect {\em expression}'',
5109 or are methods defined for the class or the exception.
5110 }
5111}
5112
5113@article{CommonObjects,
5114 author = {A. Snyder},
5115 title = {Object-Oriented Programming for Common Lisp},
5116 address = {Palo Alto CA},
5117 year = 1985,
5118 publisher = {Software Technology Laboratory, Hewlett-Packard Laboratories},
5119 journal = {Report ATC-85-1},
5120}
5121
5122@book{objective-c,
5123 keywords = {},
5124 author = {Brad J. Cox},
5125 title = {Object-oriented programming; an evolutionary approach},
5126 publisher = {Addison-Wesley},
5127 address = {Boston},
5128 year = 1986
5129}
5130
5131@misc{obj-c-book,
5132 keywords = {objective-c},
5133 contributor = {pabuhr@plg},
5134 key = {Objective-C},
5135 author = {Objective-C},
5136 publisher = {Apple Inc.},
5137 year = 2014,
5138 howpublished= {\href{https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC}{https://\-developer.apple.com/\-library/archive/\-documentation/\-Cocoa/\-Conceptual/\-ProgrammingWithObjectiveC}},
5139}
5140
5141@misc{xcode7,
5142 keywords = {objective-c},
5143 contributor = {a3moss@uwaterloo.ca},
5144 key = {Xcode},
5145 title = {{X}code 7 Release Notes},
5146 year = 2015,
5147 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}},
5148}
5149
5150@book{Beta,
5151 keywords = {Beta, object oriented, concurrency, exceptions},
5152 contributer = {pabuhr@plg},
5153 author = {Ole Lehrmann Madsen and Birger M{\o}ller-Pedersen and Kristen Nygaard},
5154 title = {Object-oriented Programming in the {BETA} Programming Language},
5155 publisher = {Addison-Wesley},
5156 address = {Boston},
5157 year = 1993,
5158}
5159
5160@article{Flavors,
5161 author = {D. A. Moon},
5162 title = {Object-Oriented Programming with Flavors},
5163 address = {Portland OR},
5164 month = sep,
5165 year = 1986,
5166 journal = {Proc. ACM Conf. on Object-Oriented Systems, Languages and Applications},
5167}
5168
5169@article{Buhr00b,
5170 keywords = {concurrency, C++, real-time},
5171 contributer = {pabuhr@plg},
5172 author = {Peter A. Buhr and Ashif S. Harji and Philipp E. Lim and Jiongxiong Chen},
5173 title = {Object-Oriented Real-Time Concurrency},
5174 journal = sigplan,
5175 volume = 35,
5176 number = 10,
5177 month = oct,
5178 year = 2000,
5179 pages = {29-46},
5180 note = {OOPSLA'00, Oct. 15--19, 2000, Minneapolis, Minnesota, U.S.A.},
5181}
5182
5183@book{Meyer88,
5184 keywords = {Eiffel},
5185 contributer = {pabuhr@plg},
5186 author = {Bertrand Meyer},
5187 title = {Object-oriented Software Construction},
5188 publisher = {Prentice-Hall},
5189 address = {Englewood Cliffs},
5190 year = {1988},
5191 series = {Prentice-Hall International Series in Computer Science},
5192}
5193
5194@article{objectPascal,
5195 keywords = {objects, modules},
5196 contributer = {gjditchfield@plg},
5197 author = {Larry Tesler},
5198 title = {Object Pascal Report},
5199 journal = {Structured Language World},
5200 year = 1985,
5201 volume = 9,
5202 number = 3,
5203}
5204
5205@misc{obj-c:next,
5206 keywords = {categories, protocols, Objective C},
5207 contributor = {gjditchfield@angus},
5208 author = {NeXT Computer, Inc.},
5209 title = {Objective C Extensions},
5210 howpublished= {On-line documentation in ``NEXTSTEP 3.1 Developer''},
5211 year = 1993
5212}
5213
5214@book{Galletly96,
5215 keywords = {occam},
5216 author = {John Galletly},
5217 title = {{OCCAM} 2: Including {OCCAM} 2.1},
5218 publisher = {{UCL} (University College London) Press},
5219 address = {London},
5220 edition = {2nd},
5221 year = 1996,
5222}
5223
5224@techreport{Morrison88,
5225 keywords = {objects, concurrency, persistence},
5226 contributer = {pabuhr@plg},
5227 author = {R. Morrison and A. L. Brown and R. Carrick and R. Connor and A. Dearle},
5228 title = {On the integration of Object-Oriented and Process-Oriented computation in persistent environments},
5229 institution = {Department of Computational Science, University of St. Andrews, Scotland},
5230 number = {PPRR 57},
5231 month = jan,
5232 year = 1988,
5233}
5234
5235@article{Peterson73,
5236 keywords = {goto, structured programming},
5237 contributer = {pabuhr@plg},
5238 author = {W. W. Peterson and T. Kasami and N. Tokura},
5239 title = {On the Capabilities of While, Repeat, and Exit Statements},
5240 journal = cacm,
5241 month = aug,
5242 year = 1973,
5243 volume = 16,
5244 number = 8,
5245 pages = {503-512}
5246}
5247
5248@article{Baker82,
5249 keywords = {compilation},
5250 contributer = {gjditchfield@plg},
5251 author = {Theodore P. Baker},
5252 title = {A One-Pass Algorithm for Overload Resolution in {Ada}},
5253 journal = toplas,
5254 year = 1982,
5255 month = oct,
5256 volume = 4,
5257 number = 4,
5258 pages = {601-614},
5259 abstract = {
5260 A simple method is presented for detecting ambiguities and finding
5261 the correct interpretations of expressions in the programming
5262 language Ada. Unlike previously reported solutions to this
5263 problem, which require multiple passes over a tree structure, the
5264 method described here operates in one bottom-up pass, during which
5265 a directed acyclic graph is produced. The correctness of this
5266 approach is demonstrated by a brief formal argument.
5267 },
5268 comment = {
5269 See also \cite{D:overload}.
5270 }
5271}
5272
5273@manual{OpenMP,
5274 keywords = {concurrency, openmp, spmd},
5275 contributer = {pabuhr@plg},
5276 key = {OpenMP},
5277 title = {OpenMP Application Program Interface, Version 4.5},
5278 month = nov,
5279 year = 2015,
5280 note = {\href{https://www.openmp.org/wp-content/uploads/openmp-4.5.pdf}{https://\-www.openmp.org/\-wp-content/\-uploads/\-openmp-4.5.pdf}},
5281}
5282
5283@book{Deitel04,
5284 keywords = {concurrency, operating systems},
5285 contributer = {pabuhr@plg},
5286 author = {Harvey M. Deitel and Paul J. Deitel and David R. Choffnes},
5287 title = {Operating Systems},
5288 publisher = {Pearson Prentice-Hall},
5289 address = {Englewood Cliffs},
5290 year = 2004,
5291 edition = {3rd},
5292}
5293
5294@book{Stalling98,
5295 keywords = {concurrency, operating systems},
5296 contributer = {pabuhr@plg},
5297 author = {William Stallings},
5298 title = {Operating Systems: Internals and Design Principles},
5299 publisher = {Prentice-Hall},
5300 address = {Englewood Cliffs},
5301 year = 1998,
5302 edition = {3rd},
5303}
5304
5305@book{Stalling01,
5306 keywords = {concurrency, operating systems},
5307 contributer = {pabuhr@plg},
5308 author = {William Stallings},
5309 title = {Operating Systems: Internals and Design Principles},
5310 publisher = {Prentice-Hall},
5311 address = {Englewood Cliffs},
5312 year = 2001,
5313 edition = {4th},
5314}
5315
5316@book{Silberschatz91,
5317 keywords = {concurrency, operating systems},
5318 contributer = {pabuhr@plg},
5319 author = {Abraham Silberschatz and James L. Peterson and Peter Galvin},
5320 title = {Operating System Concepts},
5321 publisher = {Addision-Wesley},
5322 address = {Boston},
5323 year = 1991,
5324 edition = {3rd},
5325}
5326
5327@book{Tanenbaum87,
5328 keywords = {concurrency, operating systems},
5329 contributer = {pabuhr@plg},
5330 author = {Andrew S. Tanenbaum},
5331 title = {Operating Systems : Design and Implementation},
5332 publisher = {Prentice-Hall},
5333 address = {Englewood Cliffs},
5334 series = {Software Series},
5335 year = 1987,
5336}
5337
5338@book{Hansen73,
5339 keywords = {monitors},
5340 contributer = {pabuhr@plg},
5341 author = {Per {Brinch Hansen}},
5342 title = {Operating System Principles},
5343 publisher = {Prentice-Hall},
5344 address = {Englewood Cliffs},
5345 year = 1973,
5346}
5347
5348@book{Bic03,
5349 keywords = {concurrency, operating systems},
5350 contributer = {pabuhr@plg},
5351 author = {Lubomir F. Bic and Alan C. Shaw},
5352 title = {Operating System Principles},
5353 publisher = {Prentice-Hall},
5354 address = {Englewood Cliffs},
5355 year = 2003,
5356}
5357
5358@techreport{milner88,
5359 keywords = {},
5360 contributer = {gjditchfield@plg},
5361 author = {Robin Milner},
5362 title = {Operational and Algebraic Semantics of Concurrent Processes},
5363 institution = {Laboratory for Foundations of Computer Science},
5364 year = 1988,
5365 address = {Department of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ},
5366 month = feb,
5367 number = {ECS-LFCS-88-46}
5368}
5369
5370@article{Ganzinger80,
5371 contributer = {a3moss@uwaterloo.ca},
5372 author = {Ganzinger, Harald and Ripken, Knut},
5373 title = {Operator Identification in {ADA}: Formal Specification, Complexity, and Concrete Implementation},
5374 journal = {SIGPLAN Notices},
5375 issue_date = {February 1980},
5376 volume = {15},
5377 number = {2},
5378 month = feb,
5379 year = {1980},
5380 issn = {0362-1340},
5381 pages = {30--42},
5382 numpages = {13},
5383 url = {http://doi.acm.org/10.1145/947586.947589},
5384 doi = {10.1145/947586.947589},
5385 publisher = {ACM},
5386 address = {New York, NY, USA}
5387}
5388
5389@article{Ford82,
5390 keywords = {},
5391 contributer = {pabuhr@plg},
5392 author = {G. Ford and B. Hansche},
5393 title = {Optional, Repeatable, and Varying Type Parameters},
5394 journal = sigplan,
5395 volume = 17,
5396 number = 2,
5397 month = feb,
5398 year = 1982,
5399 pages = {41-48},
5400}
5401
5402@manual{pli,
5403 keywords = {PL/I},
5404 contributer = {gjditchfield@plg},
5405 key = {IBM},
5406 title = {{OS} and {DOS} {PL/I} Reference Manual},
5407 organization= {International Business Machines},
5408 edition = {1st},
5409 month = sep,
5410 year = 1981,
5411 note = {Manual GC26-3977-0},
5412}
5413
5414@techreport{D:overload,
5415 keywords = {overload resolution, compilation},
5416 contributer = {gjditchfield@plg},
5417 author = {M. Dausmann et. al.},
5418 title = {Overloading in {Ada}},
5419 institution = {Universitat Karlsruhe},
5420 year = 1979,
5421 number = {23/79},
5422 comment = {
5423 Probably the earliest description of the two-pass (bottom-up,
5424 top-down) overload resolution algorithm. See also
5425 \cite{PW:overload,WS:overload,PDM:overload,Cor:overload,Bak:overload}.
5426 }
5427}
5428
5429@article{EB87,
5430 keywords = {packages, private types, assignment, equality},
5431 contributer = {gjditchfield@plg},
5432 author = {J. Dana Eckart and Richard J. LeBlanc},
5433 title = {Overloading in the {Ada} Language: Is it too restrictive?},
5434 journal = {Computer Languages},
5435 year = 1987,
5436 volume = 12,
5437 number = {3/4},
5438 pages = {163-172},
5439 abstract = {
5440 Packages in the Ada language provide a mechanism for extending the
5441 language through the development of additional data types. Such
5442 types can be better integrated into the language using operator
5443 overloading; however, key limitations prevent new types from being
5444 transparently integrated into the language. Allowing function
5445 names to overload private type names would give a cleaner and
5446 clearer mechanism for building values of these types. Furthermore,
5447 by allowing redefinitions of ``:='' and by making it easier to
5448 overload ``='' for private types, Ada coud be transformed into a
5449 more expressive language.
5450 }
5451}
5452
5453@article{PW:overload,
5454 keywords = {compilation},
5455 contributer = {gjditchfield@plg},
5456 author = {Guido Persch and Georg Winterstein and Manfred Dausman and Sophia Drossopoulou},
5457 title = {Overloading in Preliminary {Ada}},
5458 journal = sigplan,
5459 year = 1980,
5460 month = nov, volume = 15, number = 11, pages = {47-56},
5461 note = {Proceedings of the ACM-SIGPLAN Symposium on the {Ada} Programming Language},
5462 comment = {
5463 The two-pass (bottom-up, then top-down) algorithm, with a proof
5464 that two passes suffice. See also \cite{D:overload}.
5465 }
5466}
5467
5468@article{SR,
5469 keywords = {concurrency, messages, rendezvous},
5470 contributer = {pabuhr@plg},
5471 author = {Gregory R. Andrews and Ronald A. Olsson and Michael Coffin and
5472 Irving Elshoff and Kelvin Nilsen and Titus Purdin and Gregg Townsend},
5473 title = {An Overview of the {SR} Language and Implementation},
5474 journal = toplas,
5475 month = jan,
5476 year = 1988,
5477 volume = 10,
5478 number = 1,
5479 pages = {51-86},
5480}
5481
5482% P
5483
5484@article{Andrews91,
5485 keywords = {general concurrency},
5486 contributer = {pabuhr@plg},
5487 author = {Gregory R. Andrews},
5488 title = {Paradigms for Process Interaction in Distributed Programs},
5489 journal = acmcs,
5490 volume = 23,
5491 number = 1,
5492 month = mar,
5493 year = 1991,
5494 pages = {49-90},
5495}
5496
5497@book{PPC++,
5498 keywords = {concurrency, parallel, distributed, C++},
5499 contributer = {pabuhr@plg},
5500 editor = {Gregory V. Wilson and Paul Lu},
5501 title = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5502 publisher = {MIT Press},
5503 series = {Scientific and Engineering Computation Series},
5504 year = 1996,
5505 pages = {1-42},
5506}
5507
5508@incollection{Stroustrup96,
5509 keywords = {concurrency, C++},
5510 contributer = {pabuhr@plg},
5511 author = {Bjarne Stroustrup},
5512 title = {A Perspective on Concurrency in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5513 editor = {Gregory V. Wilson and Paul Lu},
5514 booktitle = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5515 publisher = {MIT Press},
5516 series = {Scientific and Engineering Computation Series},
5517 year = 1996,
5518 pages = {xxvi-xxvii},
5519}
5520
5521@incollection{Yang96b,
5522 keywords = {concurrency, C++},
5523 contributer = {pabuhr@plg},
5524 author = {Shelby X. Yang and Dennis Gannon and Peter Beckman and Jacob Gotwals and Neelakantan Sundaresan},
5525 editor = {Gregory V. Wilson and Paul Lu},
5526 title = {p{C}++},
5527 booktitle = {Parallel Programming in {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5528 publisher = {MIT Press},
5529 address = {Cambridge},
5530 series = {Scientific and Engineering Computation Series},
5531 pages = {507-546},
5532 year = 1996,
5533}
5534
5535@article{goguen84,
5536 keywords = {},
5537 contributer = {gjditchfield@plg},
5538 author = {Goseph A. Goguen},
5539 title = {Parameterized Programming},
5540 journal = ieeese,
5541 year = 1984,
5542 month = sep, volume = "SE-10", number = 5, pages = {528-543},
5543 abstract = {
5544 Parameterized programming is a powerful technique for the reliable
5545 reuse of software. In this technique, modules are parameterized
5546 over very general interfaces that describe what properties of an
5547 environment are required for the module to work correctly.
5548 Reusability is enhanced by the flexibility of the parameterization
5549 mechanism proposed here. Reliability is further enhanced by
5550 permitting interface requirements to include more than purely
5551 syntactic information. This paper introduces three new ideas that
5552 seem especially useful in supporting parameterized programming: 1)
5553 {\em theories}, which declare global properties of program modules
5554 and interfaces; 2) {\em views}, which connect theories with program
5555 modules in an elegant way; and 3) {\em module expressions}, a kind
5556 of general structured program transformation which produces new
5557 modules by modifying and combining existing modules. Although
5558 these ideas are illustrated with some simple examples in the OBJ
5559 programming language, they should also be taken as proposals for an
5560 Ada library system, for adding modules to Prolog, and as
5561 considerations for future language design efforts. OBJ is an
5562 ultra-high level programming language, based upon rewrite rules,
5563 that incorporates these ideas, and many others from modern
5564 programming methodology.
5565 }
5566}
5567
5568@inproceedings{c++:templates,
5569 author = {Bjarne Stroustrup},
5570 contributer = {gjditchfield@plg},
5571 title = {Parameterized Types for {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
5572 booktitle = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
5573 organization= {USENIX Association},
5574 year = 1988, pages = {1-18}
5575}
5576
5577@inproceedings{Boehm85,
5578 keywords = {second-order unification},
5579 contributer = {gjditchfield@plg},
5580 author = {Hans-J. Boehm},
5581 title = {Partial Polymorphic Type Inference is Undecidable},
5582 booktitle = {26th Annual Symposium on Foundations of Computer Science},
5583 year = 1985,
5584 pages = {339-345},
5585 organization= {IEEE Computer Society},
5586 publisher = {IEEE Computer Society Press},
5587 address = {1730 Massachusetts Avenue, N.W, Washington, D.C. 20036-1903},
5588 summary = {
5589 Given a base typed lambda calculus with function types, type
5590 abstractions, and a recursive expression \(\mbox{fix } x:t.e\),
5591 then type inference for the partially typed language
5592 \begin{eqnarray}
5593 \lambda x:\tau.e &\Rightarrow& \lambda x.e \\
5594 \mbox{fix } x:\tau.e &\Rightarrow& \mbox{fix } x.e \\
5595 e \tau &\Rightarrow& e ?
5596 \end{eqnarray}
5597 is undecidable.
5598 }
5599}
5600
5601@book{Pascal,
5602 keywords = {Pascal},
5603 contributer = {pabuhr@plg},
5604 author = {Kathleen Jensen and Niklaus Wirth},
5605 title = {{P}ascal User Manual and Report, ISO Pascal Standard},
5606 publisher = {Springer--Verlag},
5607 year = 1991,
5608 edition = {4th},
5609 note = {Revised by Andrew B. Mickel and James F. Miner}
5610}
5611
5612@book{Pascal:old,
5613 keywords = {Pascal},
5614 contributer = {pabuhr@plg},
5615 author = {Kathleen Jensen and Niklaus Wirth},
5616 title = {{P}ascal User Manual and Report},
5617 publisher = {Springer--Verlag},
5618 year = 1975,
5619 edition = {1st},
5620}
5621
5622@article{Turba85,
5623 keywords = {Pascal, exception handling, inheritance},
5624 contributer = {pabuhr@plg},
5625 author = {Thomas N. Turba},
5626 title = {The {P}ascal Exception Handling Proposal},
5627 journal = sigplan,
5628 volume = 20,
5629 number = 8,
5630 month = aug,
5631 year = 1985,
5632 pages = {93-98},
5633}
5634
5635@manual{Pascal/VS,
5636 keywords = {PL/I},
5637 contributer = {pabuhr@plg},
5638 key = {IBM},
5639 title = {{P}ascal/{VS} Language Reference Manual},
5640 organization= {International Business Machines},
5641 edition = {1st},
5642 year = 1981,
5643 note = {Manual SH20-6168-1},
5644}
5645
5646@misc{perf,
5647 contributer = {pabuhr@plg},
5648 key = {perf},
5649 author = {perf},
5650 howpublished= {\href{https://perf.wiki.kernel.org/index.php/Tutorial}{https://\-perf.wiki.kernel.org/\-index.php/\-Tutorial}},
5651}
5652
5653@misc{Verch12,
5654 contributer = {pabuhr@plg},
5655 author = {Shaun Verch},
5656 title = {Performance Analysis of 64-Bit Capriccio},
5657 month = may,
5658 year = 2012,
5659 howpublished= {\href{http://cs.brown.edu/research/pubs/theses/masters/2012/verch.pdf}{http://cs.brown.edu/\-research/\-pubs/\-theses/\-masters/\-2012/\-verch.pdf}},
5660}
5661
5662@article{Anderson90,
5663 keywords = {spin locks, back off, performance},
5664 contributer = {pabuhr@plg},
5665 author = {Thomas E. Anderson},
5666 title = {The Performance of Spin Lock Alternatives for Shared-Memory Multiprocessors},
5667 journal = ieeepds,
5668 month = jan,
5669 year = 1990,
5670 volume = 1,
5671 number = 1,
5672 pages = {6-16},
5673}
5674
5675@inproceedings{Conchon07,
5676 keywords = {persistent array, union-find},
5677 contributer = {a3moss@uwaterloo.ca},
5678 title = {A persistent union-find data structure},
5679 author = {Conchon, Sylvain and Filli{\^a}tre, Jean-Christophe},
5680 booktitle = {Proceedings of the 2007 workshop on Workshop on ML},
5681 pages = {37--46},
5682 year = {2007},
5683 organization= {ACM}
5684}
5685
5686@article{poly,
5687 keywords = {Poly, Standard ML, Russell, persistence},
5688 contributer = {gjditchfield@plg},
5689 author = {David C. J. Matthews},
5690 title = {Poly Manual},
5691 journal = sigplan,
5692 month = sep, year = 1985,
5693 volume = 20, number = 9, pages = {52-76}
5694}
5695
5696@techreport{Atkinson87b,
5697 keywords = {naming, persistence},
5698 contributer = {pabuhr@plg},
5699 author = {M. P. Atkinson and R. Morrison},
5700 title = {Polymorphic Names and Iterations},
5701 institution = {Universities of Glasgow and St. Andrews, Scotland},
5702 number = {PPRR-53-87},
5703 month = nov,
5704 year = 1987,
5705}
5706
5707@book{Harland,
5708 keywords = {},
5709 author = {David M. Harland},
5710 title = {Polymorphic Programming Languages: Design and Implementation},
5711 publisher = {Ellis Horwood},
5712 year = 1984,
5713 series = {Computers and their Applications},
5714 address = {Market Cross House, Cooper Street, Chichester, West Sussex, PO19 1EB, England},
5715 summary = {
5716 The principles of Procedural Abstraction, Data Type Completeness,
5717 Declaration Correspondence, and Orthogonality are ruthlessly applied
5718 to the design of a polymorphic language.
5719 }
5720}
5721
5722@unpublished{poa,
5723 keywords = {Force N, type inference, reusability, transcendance},
5724 contributer = {gjditchfield@plg},
5725 author = {G. V. Cormack and A. K. Wright},
5726 title = {Polymorphism, Overloading, and Abstraction},
5727 note = {personal communication}
5728}
5729
5730@inproceedings{forceone:impl,
5731 keywords = {Parametric polymorphism, ForceOne},
5732 contributer = {gjditchfield@plg},
5733 author = {G. V. Cormack and A. K. Wright},
5734 title = {Polymorphism in the Compiled Language {ForceOne}},
5735 booktitle = {Proceedings of the 20th Hawaii International Conference on Systems Sciences},
5736 month = jan,
5737 year = 1987,
5738 pages = {284-292},
5739}
5740
5741@incollection{POOL-T,
5742 keywords = {objects, concurrency},
5743 contributer = {pabuhr@plg},
5744 author = {Pierre America},
5745 title = {POOL-T: A Parallel Object-Oriented Language},
5746 booktitle = {Object-Oriented Concurrent Programming},
5747 publisher = {The MIT Press},
5748 year = 1987,
5749 pages = {199-220},
5750 editor = {Akinori Yonezawa and Mario Tokoro}
5751}
5752
5753@article{Hardgrave76,
5754 keywords = {positional, keyword, parameters, arguments},
5755 contributer = {pabuhr@plg},
5756 author = {W. T. Hardgrave},
5757 title = {Positional versus Keyword Parameter Communication in Programming Languages},
5758 journal = sigplan,
5759 volume = 11,
5760 number = 5,
5761 month = may,
5762 year = 1976,
5763 pages = {52-58},
5764}
5765
5766@inproceedings{Rafkind09,
5767 keywords = {accurate, C programming language, conservative, garbage collection, precise},
5768 contributer = {pabuhr@plg},
5769 author = {Rafkind, Jon and Wick, Adam and Regehr, John and Flatt, Matthew},
5770 title = {Precise Garbage Collection for C},
5771 booktitle = {Proceedings of the 2009 International Symposium on Memory Management},
5772 series = {ISMM '09},
5773 year = {2009},
5774 location = {Dublin, Ireland},
5775 pages = {39-48},
5776 publisher = {ACM},
5777 address = {New York, NY, USA},
5778}
5779
5780@article{Ada:preliminary,
5781 keywords = {Ada},
5782 contributer = {pabuhr@plg},
5783 author = {Jean D. Ichbiah and Bernd Krieg-Brueckner and Brian A. Wichmann
5784 and Henry F. Ledgard and Jean-Claude Heliard and Jean-Raymond Abrial
5785 and John G. P. Barnes and Olivier Roubine},
5786 title = {Preliminary {Ada} Reference Manual},
5787 journal = sigplan,
5788 volume = 14,
5789 number = 6,
5790 month = jun,
5791 year = 1979,
5792 note = {Part A},
5793}
5794
5795@techreport{Forsythe,
5796 author = {John C. Reynolds},
5797 title = {Preliminary Design of the Programming Language {Forsythe}},
5798 institution = {Carnegie Mellon University},
5799 number = {CMU-CS-88-159},
5800 month = jun,
5801 year = 1988,
5802}
5803
5804@article{PRESTO,
5805 keywords = {concurrency, threads},
5806 contributer = {dgharriss@plg},
5807 author = {B. N. Bershad and E. D. Lazowska and H. M. Levy},
5808 title = {{PRESTO}: A System for Object-oriented Parallel Programming},
5809 journal = spe,
5810 volume = 18,
5811 number = 8,
5812 month = aug,
5813 year = 1988,
5814 pages = {713-732}
5815}
5816
5817@book{Ben-Ari82,
5818 keywords = {concurrency, parallel, programming languages},
5819 contributer = {pabuhr@plg},
5820 author = {Mordechai Ben-Ari},
5821 title = {Principles of Concurrent Programming},
5822 publisher = {Prentice-Hall International},
5823 address = {Englewood Cliffs},
5824 year = 1982,
5825}
5826
5827@book{Tennent81,
5828 author = {R. D. Tennent},
5829 title = {Principles of Programming Languages},
5830 publisher = {Prentice-Hall International},
5831 address = {Englewood Cliffs},
5832 year = 1981,
5833 series = {Series in Computer Science}
5834}
5835
5836@article{Lister77,
5837 keywords = {monitors, nested monitor calls},
5838 contributer = {pabuhr@plg},
5839 author = {Andrew Lister},
5840 title = {The Problem of Nested Monitor Calls},
5841 journal = osr,
5842 volume = 11,
5843 number = 3,
5844 month = jul,
5845 year = 1977,
5846 pages = {5-7},
5847}
5848
5849@article{psa:persistence,
5850 keywords = {persistence, first-class procedures, closure, PS-Algol, Abstract Data Types},
5851 contributer = {gjditchfield@plg},
5852 author = {Malcolm P. Atkinson and Ronald Morrison},
5853 title = {Procedures as Persistent Data Objects},
5854 journal = toplas,
5855 volume = {7}, number = {4},
5856 pages = {539-559},
5857 month = oct, year = 1985,
5858 comment = {
5859 PS-Algol has ``structures'', accessible only through ``pntrs''.
5860 Pntrs can refer to any type of structure. Field references involve
5861 a run-time check. This, plus first-class procedures, can simulate
5862 abstract data types. Procedure variables operating on pntrs
5863 simulate ADT operations. A block defines a structure to implement
5864 the ADT, and assigns procedures to the variables. Functions
5865 returning structures containing procedures simulate multiple
5866 implementations and parameterized ADTs.
5867
5868 An outer procedure that returns a procedure that contains
5869 (non-local) references to the outer procedure's parameters
5870 implements partial evaluation.
5871
5872 Modules can be simulated like ADT's. The module itself is a
5873 structure instance that is placed in persistent storage, and the
5874 module is imported by fetching it from the persistent store.
5875 Multiple instances of modules are easy. Installation of new
5876 versions can be done by replacing the version in the database.
5877 }
5878}
5879
5880@article{Procol89,
5881 keywords = {active objects, object-oriented languages, object-based languages, explicit per-object protocol},
5882 contributer = {akgoel@plg},
5883 author = {Jan van den Bos and Chris Laffra},
5884 title = {PROCOL: A Parallel Object Language with Protocols},
5885 journal = sigplan,
5886 volume = 24,
5887 number = 10,
5888 month = oct,
5889 year = 1989,
5890 pages = {95-102},
5891 note = {Proceedings of the OOPSLA'89 Conference, Oct. 1--6, 1989, New Orleans, Lousiana},
5892 abstract = {},
5893}
5894
5895@inproceedings{Buhr98,
5896 keywords = {profiling, monitoring, visualization},
5897 contributer = {pabuhr@plg},
5898 author = {Peter A. Buhr and Robert Denda},
5899 title = {{$\mu$Profiler} : Profiling User-Level Threads in a Shared-Memory Programming Environment},
5900 booktitle = {Proc. of 2nd Inter. Symp. on Computing in Object-Oriented Parallel Environments},
5901 series = {Lecture Notes in Computer Science},
5902 publisher = {Springer-Verlag},
5903 volume = 1505,
5904 opteditor = {Dennis Caromel and Rodney R. Oldehoeft and Marydell Tholburn},
5905 address = {Santa Fe, New Mexico, U.S.A.},
5906 month = dec,
5907 year = 1998,
5908 pages = {159-166},
5909}
5910
5911@book{PowerPC,
5912 key = {PowerPC processor},
5913 title = {Programming Environments Manual for 32-Bit Implementations of the PowerPC ArchitectureARM Architecture},
5914 publisher = {Freescale Semiconductor},
5915 volume = {MPCFPE32B},
5916 edition = {Rev. 3},
5917 month = 9,
5918 year = 2005,
5919}
5920
5921@book{Butenhof97,
5922 keywords = {PThreads, concurrency},
5923 contributer = {pabuhr@plg},
5924 author = {David R. Butenhof},
5925 title = {Programming with {POSIX} Threads},
5926 publisher = {Addison-Wesley},
5927 address = {Boston},
5928 series = {Professional Computing},
5929 year = 1997,
5930}
5931
5932@book{SETL,
5933 keywords = {SETL},
5934 contributer = {pabuhr@plg},
5935 author = {J. T. Schwartz and R. B. K. Dewar and E. Dubinsky and E. Schonberg},
5936 title = {Programming with Sets: An Introduction to {SETL}},
5937 publisher = {Springer},
5938 address = {New York, NY, USA},
5939 year = 1986,
5940}
5941
5942@book{Genuys68,
5943 keywords = {contains Dijkstra's Cooperating Sequential Processes},
5944 contributer = {pabuhr@plg},
5945 editor = {F. Genuys},
5946 title = {Programming Languages},
5947 publisher = {Academic Press},
5948 address = {London, New York},
5949 year = 1968,
5950 note = {NATO Advanced Study Institute, Villard-de-Lans, 1966}
5951}
5952
5953@manual{ANSI99:C,
5954 keywords = {ANSI C 99},
5955 contributer = {pabuhr@plg},
5956 title = {Programming Languages -- {C}},
5957 organization= {International Standard ISO/IEC 9899:1999 (E)},
5958 publisher = {American National Standards Institute},
5959 address = {www.ansi.org},
5960 year = 1999,
5961}
5962
5963@manual{ANSI98:C++,
5964 keywords = {ANSI C++ 98},
5965 contributer = {pabuhr@plg},
5966 key = {C++98},
5967 title = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language ISO/IEC 14882:1998},
5968 edition = {1st},
5969 publisher = {International Standard Organization},
5970 address = {\href{https://www.iso.org/standard/25845.html}{https://\-www.iso.org/\-standard/\-25845.html}},
5971 year = 1998,
5972}
5973
5974@manual{C++14,
5975 keywords = {ISO/IEC C++ 14},
5976 contributer = {pabuhr@plg},
5977 key = {C++14},
5978 title = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language ISO/IEC 14882:2014},
5979 edition = {4th},
5980 publisher = {International Standard Organization},
5981 address = {\href{https://www.iso.org/standard/64029.html}{https://\-www.iso.org/\-standard/\-64029.html}},
5982 year = 2014,
5983}
5984
5985@manual{C++17,
5986 keywords = {ISO/IEC C++ 17},
5987 contributer = {pabuhr@plg},
5988 key = {C++17},
5989 title = {{C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Programming Language ISO/IEC 14882:2017},
5990 edition = {5th},
5991 publisher = {International Standard Organization},
5992 address = {\href{https://www.iso.org/standard/68564.html}{https://\-www.iso.org/\-standard/\-68564.html}},
5993 year = 2017,
5994}
5995
5996@manual{MS:VisualC++,
5997 keywords = {Microsoft Visual C++},
5998 contributer = {pabuhr@plg},
5999 title = {Microsoft Visual {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} .NET Language Reference},
6000 organization= {Microsoft Corporation},
6001 year = 2002,
6002 note = {Microsoft Press, Redmond, Washington, U.S.A.},
6003}
6004
6005@article{HasselBring00,
6006 keywords = {concurrency, prototyping},
6007 contributer = {pabuhr@plg},
6008 author = {Wilhelm Hasselbring},
6009 title = {Programming Languages and Systems for Prototyping Concurrent Applications},
6010 journal = acmcs,
6011 volume = 32,
6012 number = 1,
6013 month = mar,
6014 year = 2000,
6015 pages = {43-79},
6016}
6017
6018@article{LLgen,
6019 keywords = {ll(1), parser generator, separate compilation},
6020 contributer = {gjditchfield@plg},
6021 author = {Dick Grune and Ceriel J. J. Jacobs},
6022 title = {A Programmer-friendly LL(1) Parser Generator},
6023 journal = spe,
6024 month = jan, year = 1988,
6025 volume = 18, number = 1, pages = {29-33},
6026 comment = {
6027 LLgen generates C-language recursive-descent parsers. The input
6028 contains procedure-like rules with alternation and repetition
6029 constructs on the right, and (typed) parameters on the left.
6030 C actions are specified between items in the right side.
6031 Alternation and repetition (reduce and shift) conflicts can be
6032 resolved statically or at run time.
6033
6034 A grammar can be specified in several files. All files must be
6035 submitted to LLgen at once, but if the C file generated is no
6036 different from the old version, then the old version is not
6037 replaced and hence need not be recompiled, which saves lots of
6038 time.
6039
6040 When an incorrect token is found, the automatic error recovery
6041 algorithm discards tokens until an ``acceptable'' token is found;
6042 if the acceptable token is not correct, a correct one is inserted.
6043 }
6044}
6045
6046@techreport{russell,
6047 keywords = {Russell},
6048 contributer = {gjditchfield@plg},
6049 author = {H. Boehm and A. Demers and J. Donahue},
6050 title = {A Programmer's Introduction to Russell},
6051 institution = {Rice University},
6052 year = 1985,
6053 number = {85-16}
6054}
6055
6056@techreport{PDM89,
6057 keywords = {existential types, universal types},
6058 contributer = {gjditchfield@plg},
6059 author = {Benjamin Pierce and Scott Dietzen and Spiro Michaylov},
6060 title = {Programming in Higher-Order Typed Lambda Calculi},
6061 institution = {School of Computer Science, Carnegie Mellon University},
6062 year = 1989,
6063 address = {Pittsburg, PA 15213-3890},
6064 month = mar, number = {CMU-CS-89-111},
6065 abstract = {
6066 This tutorial presents a hierarchy of increasingly powerful
6067 languages, beginning with Church's simply typed
6068 \(\lambda\)-calculus (\(F_1\)) and the second-order polymorphic
6069 \(\lambda\)-calculus of Girard and Reynolds, and culminating in a
6070 fragment of Girard's \(\omega\)-order polymorphic
6071 \(\lambda\)-calculus (\(F_\omega\)). Our focus throughout is on
6072 the unusual style of programming that arises in these languages,
6073 where all functions are total and the primary control construct is
6074 iteration rather than general recursion.
6075 }
6076}
6077
6078@book{Modula-2,
6079 keywords = {modules, coroutines},
6080 contributer = {pabuhr},
6081 author = {Niklaus Wirth},
6082 title = {Programming in Modula-2},
6083 publisher = {Springer},
6084 address = {New York},
6085 year = 1988,
6086 edition = {4th},
6087 series = {Texts and Monographs in Computer Science},
6088}
6089
6090@manual{Ada,
6091 keywords = {Ada, packages, tasks, exceptions},
6092 contributer = {pabuhr@plg},
6093 title = {The Programming Language {Ada}: Reference Manual},
6094 author = {Ada},
6095 organization= {United States Department of Defense},
6096 edition = {{ANSI/MIL-STD-1815A-1983}},
6097 month = feb,
6098 year = 1983,
6099 note = {Springer, New York},
6100}
6101
6102@manual{ada:old,
6103 keywords = {Ada, packages, tasks, exceptions},
6104 contributer = {gjditchfield@plg},
6105 title = {The Programming Language {Ada}: Reference Manual},
6106 organization= {United States Department of Defense},
6107 publisher = {Springer},
6108 year = 1981
6109}
6110
6111@book{Ghezzi,
6112 keywords = {},
6113 author = {Carlo Ghezzi and Mehdi Jazayeri},
6114 title = {Programming Language Concepts},
6115 publisher = {Wiley},
6116 year = 1982
6117}
6118
6119@article{ConcurrentPascal,
6120 keywords = {Concurrent Pascal},
6121 contributer = {pabuhr@plg},
6122 author = {Per {Brinch Hansen}},
6123 title = {The Programming Language Concurrent Pascal},
6124 journal = ieeese,
6125 volume = 2,
6126 month = jun,
6127 year = 1975,
6128 pages = {199-206}
6129}
6130
6131@phdthesis{Buhr85:thesis,
6132 keywords = {},
6133 contributer = {pabuhr@plg},
6134 author = {P. A. Buhr},
6135 title = {A Programming System},
6136 school = {University of Manitoba},
6137 year = {1985}
6138}
6139
6140@techreport{pierce91,
6141 keywords = {typed lambda calculus},
6142 contributer = {gjditchfield@plg},
6143 author = {Benjamin C. Pierce},
6144 title = {Programming with Intersection Types, Union Types, and Polymorphism},
6145 institution = {Carnegie Mellon University},
6146 year = 1991,
6147 month = feb,
6148 number = {CMU-CS-91-106},
6149 annote = {
6150 Discusses a typed lambda calculus with
6151 \begin{itemize}
6152 \item
6153 Intersection types \(\tau = \tau_1\wedge\tau_2\) with \(\tau \le
6154 \tau_i\) for all \(i\).
6155 \item
6156 Union types \(\tau = \tau_1\vee\tau_2\) with \(\tau_i \le \tau\),
6157 and with implicit coercions from \(tau_i\) to \(\tau\). Only
6158 operations valid for both element types can be applied to the
6159 union; there are no projections. Union types are to variant
6160 records as set union is to disjoint set union.
6161 \item
6162 Function types and universal quantification, with subtyping rules.
6163 When functions and arguments intersections, the result of
6164 application is the intersection of all valid combinations.
6165 \item
6166 Distribution rules for combinations of types.
6167 \item
6168 "Union elimination": "case \(x = e\) of \(e'\)", where \(e\) is a
6169 union, has type \(\tau\) if \(e'\) has that type with \(x\) having
6170 every element type of the union.
6171 \item
6172 "Finitary quantification": "for \(t\) in \(\tau_1,\ldots,\tau_n.e\)"
6173 typechecks \(e\) with \(t\) bound to each choice, and intersects
6174 the results.
6175 \end{itemize}
6176
6177 Examples include: type of "natural" numbers, treated as a union of
6178 "zero" and "positive" types; default parameters, faked by using an
6179 argument that is an intersection of a data type and a function
6180 taking an explicit argument.
6181
6182 Unions can be mostly faked, according to Mitchell:
6183 \[\tau_1\vee\tau_2 \equiv
6184 \forall\tau.(\tau_1\on\tau)\wedge(\tau_2\on\tau)\]
6185 }
6186}
6187
6188@article{Moore75,
6189 keywords = {approximation methods, integrated circuits},
6190 contributer = {pabuhr@plg},
6191 author = {Gordon E. Moore},
6192 title = {Progress in Digital Integrated Electronics},
6193 journal = {Technical Digest, International Electron Devices Meeting, IEEE},
6194 year = 1975,
6195 pages = {11-13},
6196}
6197
6198@article{promises,
6199 keywords = {futures, Argus, call streams, rpc},
6200 contributer = {gjditchfield@plg},
6201 author = {Barbara Liskov and Liuba Shrira},
6202 title = {Promises: Linguistic Support for Efficient Asynchronous Procedure Calls in Distributed Systems},
6203 journal = sigplan,
6204 year = 1988,
6205 month = jul,
6206 volume = 23,
6207 number = 7,
6208 pages = {260-267},
6209 note = {Proceedings of the SIGPLAN '88 Conference on Programming Language Design and Implementation},
6210 abstract = {
6211 This paper deals with the integration of an efficient asynchronous
6212 remote procedure call mechanism into a programming language. It
6213 describes a new data type called a {\em promise} that was designed
6214 to support asynchronous calls. Promises allow a caller to run in
6215 parallel with a call and to pick up the results of the call,
6216 including any exceptions it raises, in a convenient and type-safe
6217 manner. The paper also discusses efficient composition of
6218 sequences of asynchronous calls to different locations in a
6219 network.
6220 }
6221}
6222
6223@article{Cook89,
6224 keywords = {},
6225 contributer = {gjditchfield@plg},
6226 author = {W. R. Cook},
6227 title = {A Proposal for Making {Eiffel} Type-safe},
6228 journal = {The Computer Journal},
6229 year = 1989,
6230 volume = 32, number = 4, pages = {305-311},
6231 abstract = {
6232
6233 }
6234}
6235
6236@inproceedings{Foxall79,
6237 keywords = {},
6238 contributer = {pabuhr@plg},
6239 author = {D. G. Foxall and M. L. Joliat and R. F. Kamel and J. J. Miceli},
6240 title = {{PROTEL}: A High Level Language for Telephony},
6241 booktitle = {Proceedings 3rd International Computer Software and Applications Conference},
6242 month = nov,
6243 year = 1979,
6244 pages = {193-197},
6245}
6246
6247@techreport{PS-Algol,
6248 keywords = {algol, persistence},
6249 contributer = {pabuhr@plg},
6250 key = {PS-Algol},
6251 title = {The {PS-Algol} Reference Manual, 4th Ed.},
6252 author = {},
6253 institution = {University of Glasgow and St. Andrews, Scotland},
6254 number = {PPRR 12},
6255 month = jun,
6256 year = 1987,
6257}
6258
6259@misc{Pthreads,
6260 keywords = {pthreads, C concurrency},
6261 contributer = {pabuhr@plg},
6262 key = {pthreads},
6263 title = {{Pthread}.h, Specifications Issue 7, {IEEE} Std 1003.1-2017},
6264 author = {IEEE and {The Open Group}},
6265 year = 2018,
6266 howpublished= {\href{http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/pthread.h.html}
6267 {http://\-pubs.opengroup.org/\-onlinepubs/\-9699919799/\-basedefs/\-pthread.h.html}},
6268}
6269
6270@manual{Python,
6271 keywords = {Python},
6272 contributer = {pabuhr@plg},
6273 author = {Python},
6274 title = {Python Language Reference, Release 3.7.2},
6275 organization= {Python Software Foundation},
6276 address = {\href{https://docs.python.org/3/reference/index.html}{https://\-docs.python.org/\-3/\-reference/\-index.html}},
6277 year = 2018,
6278}
6279
6280% Q
6281
6282@inproceedings{Qthreads,
6283 keywords = {user-level threading},
6284 author = {Kyle B. Wheeler and Richard C. Murphy and Douglas Thain},
6285 title = {Qthreads: An API for Programming with Millions of Lightweight Threads},
6286 booktitle = {International Symposium on Parallel and Distributed Processing},
6287 organization= {IEEE},
6288 address = {Miami, FL, USA},
6289 month = apr,
6290 year = 2008,
6291}
6292
6293@article{Grossman06,
6294 keywords = {Cyclone, existential types, polymorphism, type variables},
6295 contributer = {a3moss@plg},
6296 author = {Dan Grossman},
6297 title = {Quantified Types in an Imperative Language},
6298 journal = toplas,
6299 issue_date = {May 2006},
6300 volume = {28},
6301 number = {3},
6302 month = may,
6303 year = 2006,
6304 issn = {0164-0925},
6305 pages = {429-475},
6306 url = {http://doi.acm.org/10.1145/1133651.1133653},
6307 doi = {10.1145/1133651.1133653},
6308 acmid = {1133653},
6309 publisher = {ACM},
6310 address = {New York, NY, USA},
6311}
6312
6313@article{Nakaike15,
6314 keywords = {hardware transactional memory},
6315 contributer = {pabuhr@plg},
6316 author = {Nakaike, Takuya and Odaira, Rei and Gaudet, Matthew and Michael, Maged M. and Tomari, Hisanobu},
6317 title = {Quantitative Comparison of Hardware Transactional Memory for Blue Gene/Q, zEnterprise {EC12}, {I}ntel Core, and {POWER8}},
6318 journal = {SIGARCH Comput. Archit. News},
6319 volume = {43},
6320 number = {3},
6321 month = jun,
6322 year = {2015},
6323 pages = {144--157},
6324 publisher = {ACM},
6325 address = {New York, NY, USA},
6326}
6327
6328@manual{Quasar,
6329 keywords = {Quasar},
6330 contributer = {pabuhr@plg},
6331 author = {Quasar},
6332 title = {Quasar Documentation, Release 0.8.0},
6333 organization= {Parallel Universe},
6334 address = {\href{http://docs.paralleluniverse.co/quasar}{http://\-docs.paralleluniverse.co/\-quasar}},
6335 year = 2018,
6336}
6337
6338% R
6339
6340@article{Ada:rationale:preliminary,
6341 keywords = {Ada},
6342 contributer = {pabuhr@plg},
6343 author = {J. D. Ichbiah and J. C. Heliard and O. Roubine and
6344 J. G. P. Barnes and B. Krieg-Brueckner and B. A. Wichmann},
6345 title = {Rationale for the Design of the {ADA} Programming Language},
6346 journal = sigplan,
6347 volume = 14,
6348 number = 6,
6349 month = jun,
6350 year = 1979,
6351 note = {Part B},
6352}
6353
6354@book{Ada:rationale,
6355 keywords = {Ada},
6356 contributer = {pabuhr@plg},
6357 author = {Jean D. Ichbiah and John G. P. Barnes and Robert J. Firth and Mike Woodger},
6358 title = {Rationale for the Design of the {ADA} Programming Language},
6359 publisher = {Under Secretary of Defense, Research and Engineering},
6360 year = 1986,
6361 address = {Ada Joint Program Office, OUSDRE(R\&AT), The Pentagon, Washington, D. C., 20301, U.S.A.},
6362}
6363
6364@manual{Ada95,
6365 keywords = {Ada},
6366 contributer = {pabuhr@plg},
6367 title = {{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@manual{Ada12,
6376 keywords = {ISO/IEC Ada},
6377 contributer = {pabuhr@plg},
6378 author = {Ada12},
6379 title = {Programming languages -- {Ada} ISO/IEC 8652:2012},
6380 edition = {3rd},
6381 publisher = {International Standard Organization},
6382 address = {\href{https://www.iso.org/standard/61507.html}{https://\-www.iso.org/\-standard/\-61507.html}},
6383 year = 2012,
6384}
6385
6386@manual{Ada95:annotated,
6387 keywords = {Ada},
6388 contributer = {pabuhr@plg},
6389 title = {Annotated {A}da Reference Manual},
6390 edition = {International Standard {ISO}/{IEC} {8652:1995(E)} with {COR.1:2000}},
6391 organization = {Intermetrics, Inc.},
6392 month = dec,
6393 year = 1995,
6394 note = {Language and Standards Libraries}
6395}
6396
6397@book{JavaRT00,
6398 keywords = {real time, draft},
6399 contributer = {pabuhr@plg},
6400 author = {Greg Bollella and Ben Brosgol and Peter Dibble and Steve Furr and James Gosling and David Hardin and Mark Turnbull},
6401 title = {The Real-Time Specification for {J}ava},
6402 series = {The Real-Time for Java Expert Group, {\small\textsf{http://\-www.rtj.org}}},
6403 publisher = {Addison-Wesley},
6404 address = {Boston},
6405 year = 2000,
6406}
6407
6408@manual{JavaRT99,
6409 organization= {Real Time for Java Experts Group},
6410 address = {{\small\textsf{http://\-www.rtj.org}}},
6411 month = sep,
6412 year = 1999,
6413}
6414
6415@article{Ronsse03,
6416 keywords = {profiling, replay},
6417 contributer = {pabuhr@plg},
6418 author = {Michiel Ronsse and De Bosschere, Koen and Mark Christiaens and Jacques Chassin de Kergommeaux and Dieter Kranzlm\"{u}ller},
6419 title = {Record/Replay for Nondeterministic Program Executions},
6420 journal = cacm,
6421 month = sep,
6422 year = 2003,
6423 volume = 46,
6424 number = 9,
6425 pages = {62-67},
6426}
6427
6428@article{Robinson48,
6429 keywords = {recursion, Ackermann function},
6430 contributer = {pabuhr@plg},
6431 author = {Raphael Mitchel Robinson},
6432 title = {Recursion and Double Recursion},
6433 publisher = {American Mathematical Society},
6434 journal = {Bulletin of the American Mathematical Society},
6435 volume = 54,
6436 pages = {987-993},
6437 year = 1948,
6438}
6439
6440@article{Dijkstra:red,
6441 keywords = {ada},
6442 contributer = {gjditchfield@plg},
6443 author = {Edsger W. Dijkstra},
6444 title = {On the RED Language submitted to the DoD},
6445 journal = sigplan,
6446 year = 1978,
6447 month = oct,
6448 volume = 13,
6449 number = 10,
6450 pages = {27-32},
6451}
6452
6453@article{Hesselink06,
6454 author = {Wim H. Hesselink},
6455 title = {Refinement Verification of the Lazy Caching Algorithm},
6456 journal = acta,
6457 year = 2006,
6458 month = oct,
6459 volume = 43,
6460 number = 3,
6461 pages = {195--222},
6462}
6463
6464@article{RemoteRendezvous,
6465 keywords = {rendezvous, concurrency},
6466 contributer = {pabuhr@plg},
6467 author = {N. D. Gammage and R. F. Kamel and L. M. Casey},
6468 title = {Remote Rendezvous},
6469 journal = spe,
6470 month = oct,
6471 year = 1987,
6472 volume = 17,
6473 number = 10,
6474 pages = {741-755}
6475}
6476
6477@mastersthesis{Schuster99,
6478 author = {Oliver Schuster},
6479 title = {Replay of Concurrent Shared-Memory Programs},
6480 school = {Universit\"at Mannheim},
6481 address = {Mannheim, Deutschland},
6482 year = 1999,
6483 month = apr,
6484 type = {Diplomarbeit},
6485 note = {\href{https://plg.uwaterloo.ca/~usystem/theses/SchusterThesis.pdf}{https://\-plg.uwaterloo.ca/\-$\sim$usystem/\-theses/\-SchusterThesis.pdf}},
6486}
6487
6488@article{Euclid,
6489 keywords = {Euclid},
6490 contributer = {pabuhr@plg},
6491 author = {B. W. Lampson and J. J. Horning and R. L. London and J. G. Mitchell and G. L. Popek},
6492 title = {Report on the Programming Language Euclid},
6493 journal = sigplan,
6494 volume = 12,
6495 number = 2,
6496 month = feb,
6497 year = 1977,
6498 pages = {1-79}
6499}
6500
6501@techreport{LOGLAN88,
6502 keywords = {LOGLAN},
6503 contributer = {pabuhr@plg},
6504 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},
6505 title = {Report on the Programming Language LOGLAN'88},
6506 institution = {Institute of Informatics, University of Warsaw},
6507 address = {Pkin 8th Floor, 00-901 Warsaw, Poland},
6508 number = {},
6509 month = dec,
6510 year = 1988,
6511}
6512
6513@mastersthesis{Schluntz17,
6514 keywords = {constructors, destructors, tuples},
6515 author = {Robert Schluntz},
6516 title = {Resource Management and Tuples in \textsf{C}$\mathbf{\forall}$},
6517 school = {School of Computer Science, University of Waterloo},
6518 year = 2017,
6519 optaddress = {Waterloo, Ontario, Canada, N2L 3G1},
6520 note = {\href{https://uwspace.uwaterloo.ca/handle/10012/11830}{https://\-uwspace.uwaterloo.ca/\-handle/\-10012/\-11830}},
6521}
6522
6523@article{FH91,
6524 keywords = {lcc},
6525 contributer = {gjditchfield@plg},
6526 author = {Christopher W. Fraser and David R. Hanson},
6527 title = {A Retargetable Compiler for {ANSI} {C}},
6528 journal = sigplan,
6529 year = 1991,
6530 month = oct, volume = 26, number = 10, pages = {29-43},
6531 abstract = {
6532 {\tt lcc} is a new retargetable compiler for ANSI C. Versions for
6533 the VAX, Motorola 68020, SPARC, and MIPS are in production use at
6534 Princeton University and at AT\&T Bell Laboratories. With a few
6535 exceptions, little about {\tt lcc} is unusual---it integrates
6536 several well engineered, existing techniques---but it is smaller
6537 and faster than most other C compilers, and it generates code of
6538 comparable quality. {\tt lcc}'s target-independent front end
6539 performs a few simple, but effective, optimizations that contribute
6540 to good code; examples include simulating register declarations and
6541 partitioning switch statements into dense tables. It also
6542 implements target-independent function tracing and expression-level
6543 profiling.
6544 }
6545}
6546
6547@article{Algol68revised,
6548 keywords = {},
6549 contributer = {gjditchfield@plg},
6550 author = {A. van Wijngaarden and B. J. Mailloux and J. E. L. Peck and
6551 C. H. A. Koster and M. Sintzoff and C. H. Lindsey and L. G. L. T.
6552 Meertens and R. G. Fisher},
6553 title = {Revised Report on the Algorithmic Language {ALGOL} 68},
6554 journal = sigplan,
6555 year = 1977,
6556 month = may,
6557 volume = 12,
6558 number = 5,
6559 pages = {1-70}
6560}
6561
6562@article{scheme,
6563 keywords = {},
6564 contributer = {gjditchfield@plg},
6565 author = {Jonathan Rees and William Clinger},
6566 title = {Revised$^3$ Report on the Algorithmic Language {S}cheme},
6567 journal = sigplan,
6568 year = 1986,
6569 month = dec,
6570 volume = 21,
6571 number = 12,
6572 pages = {37-79},
6573}
6574
6575@article{scheme5,
6576 keywords = {scheme},
6577 contributer = {pabuhr@plg},
6578 author = {H. Abelson and Adams, IV, N. I. and D. H. Bartley and G. Brooks and R. K. Dybvig and D. P. Friedman and
6579 R. Halstead and C. Hanson and C. T. Haynes and E. Kohlbecker and D. Oxley and K. M. Pitman and G. J. Rozas and
6580 G. L. Steele Jr. and G. J. Sussman and M. Wand and \emph{Ed. by} Richard Kelsey and William Clinger and Jonathan Rees},
6581 title = {Revised$^5$ Report on the Algorithmic Language {S}cheme},
6582 journal = sigplan,
6583 year = 1998,
6584 month = sep,
6585 volume = 33,
6586 number = 9,
6587 pages = {26-76},
6588}
6589
6590@manual{Rust,
6591 keywords = {Rust programming language},
6592 contributer = {pabuhr@plg},
6593 key = {Rust},
6594 title = {{R}ust Programming Language},
6595 optaddress = {Rust Project Developers},
6596 year = 2015,
6597 note = {\href{https://doc.rust-lang.org/reference.html}{https://\-doc.rust-lang\-.org/\-reference.html}},
6598}
6599
6600@manual{Ruby,
6601 keywords = {Ruby},
6602 contributer = {pabuhr@plg},
6603 author = {Ruby},
6604 title = {Ruby Documentation, Release 2.6.0},
6605 organization= {Python Software Foundation},
6606 address = {\href{https://www.ruby-lang.org/en/documentation}{https://\-www.ruby-lang.org/\-en/\-documentation}},
6607 year = 2018,
6608}
6609
6610% S
6611
6612@manual{Scala,
6613 keywords = {Scala programming language},
6614 contributer = {pabuhr@plg},
6615 key = {Scala},
6616 title = {{S}cala Language Specification, Version 2.11},
6617 address = {\'{E}cole Polytechnique F\'{e}d\'{e}rale de Lausanne},
6618 year = 2016,
6619 note = {\href{http://www.scala-lang.org/files/archive/spec/2.11}{http://\-www.scala-lang.org/\-files/\-archive/\-spec/\-2.11}},
6620}
6621
6622@inproceedings{Michael04,
6623 keywords = {lock free, dynamic memory allocation},
6624 contributer = {pabuhr@plg},
6625 author = {Maged M. Michael},
6626 title = {Scalable Lock-free Dynamic Memory Allocation},
6627 booktitle = {PLDI '04: Proceedings of the ACM SIGPLAN 2004 Conference on Programming Language Design and Implementation},
6628 location = {Washington DC, USA},
6629 publisher = {ACM},
6630 address = {New York, NY, USA},
6631 volume = 39,
6632 year = 2004,
6633 month = jun,
6634 pages = {35-46},
6635}
6636
6637@article{Anderson92,
6638 keywords = {light-weight tasks},
6639 contributer = {pabuhr@plg},
6640 author = {Thomas E. Anderson and Brian N. Bershad and Edward D. Lazowska and Henry M. Levy},
6641 title = {Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism},
6642 journal = tocs,
6643 volume = 10,
6644 number = 1,
6645 month = feb,
6646 year = 1992,
6647 pages = {53-79},
6648}
6649
6650@manual{SELF,
6651 keywords = {programming language, obect-oriented, polymorphism},
6652 contributer = {pabuhr@plg},
6653 author = {Ole Agesen and Lars Bak and Craig Chambers and Bay-Wei Chang and Urs H{\o}lzle
6654 and John H. Maloney and Randall B. Smith and David Ungar and Mario Wolczko},
6655 title = {The {SELF} 3.0 Programmer's Reference Manual},
6656 organization= {Sun Microsystems, Inc., and Stanford University},
6657 year = 1993,
6658}
6659
6660@inproceedings{Cardelli84,
6661 keywords = {subtypes, recursive types, records, variants, object oriented},
6662 contributer = {gjditchfield@plg},
6663 author = {Luca Cardelli},
6664 title = {A Semantics of Multiple Inheritance},
6665 booktitle = {Semantics of Data Types},
6666 year = 1984,
6667 pages = {51-67},
6668 editor = {G. Kahn and D. B. MacQueen and G. D. Plotkin},
6669 publisher = {Springer},
6670 note = {Lecture Notes in Computer Science v. 173},
6671}
6672
6673@article{Baker78,
6674 keywords = {Algol display, FUNARG's, Lisp 1.5, deep binding, environment trees, multiprogramming, shallow binding},
6675 contributer = {a3moss@uwaterloo.ca},
6676 author = {Baker,Jr., Henry G.},
6677 title = {Shallow Binding in Lisp 1.5},
6678 journal = {Commun. ACM},
6679 issue_date = {July 1978},
6680 volume = 21,
6681 number = 7,
6682 month = jul,
6683 year = 1978,
6684 issn = {0001-0782},
6685 pages = {565--569},
6686 numpages = {5},
6687 url = {http://doi.acm.org/10.1145/359545.359566},
6688 doi = {10.1145/359545.359566},
6689 acmid = {359566},
6690 publisher = {ACM},
6691 address = {New York, NY, USA}
6692}
6693
6694@article{Baker91,
6695 keywords = {shallow binding, functional arrays},
6696 contributer = {a3moss@uwaterloo.ca},
6697 author = {Baker, Henry G.},
6698 title = {Shallow Binding Makes Functional Arrays Fast},
6699 journal = {SIGPLAN Not.},
6700 issue_date = {Aug. 1991},
6701 volume = 26,
6702 number = 8,
6703 month = aug,
6704 year = 1991,
6705 issn = {0362-1340},
6706 pages = {145--147},
6707 numpages = {3},
6708 url = {http://doi.acm.org/10.1145/122598.122614},
6709 doi = {10.1145/122598.122614},
6710 acmid = {122614},
6711 publisher = {ACM},
6712 address = {New York, NY, USA},
6713}
6714
6715@techreport{Adve95,
6716 keywords = {shared memory, consistency models},
6717 contributer = {pabuhr@plg},
6718 author = {Sarita V. Adve and Kourosh Gharachorloo},
6719 title = {Shared Memory Consistency Models: A Tutorial},
6720 institution = {Western Research Laboratory},
6721 address = {250 University Avenue, Palo Alto, California, 94301, U.S.A.},
6722 number = {7},
6723 month = sep,
6724 year = 1995,
6725 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}.},
6726}
6727
6728@article{Adve95reprint,
6729 keywords = {shared memory, consistency models},
6730 contributer = {pabuhr@plg},
6731 author = {Sarita V. Adve and Kourosh Gharachorloo},
6732 journal = {Computer},
6733 title = {Shared Memory Consistency Models: A Tutorial},
6734 month = dec,
6735 year = 1996,
6736 volume = 29,
6737 number = 12,
6738 pages = {66-76},
6739}
6740
6741@article{Nickolls08,
6742 author = {Nickolls, John and Buck, Ian and Garland, Michael and Skadron, Kevin},
6743 title = {Scalable Parallel Programming with CUDA},
6744 journal = {Queue},
6745 volume = {6},
6746 number = {2},
6747 month = mar,
6748 year = 2008,
6749 pages = {40-53},
6750 publisher = {ACM},
6751 address = {New York, NY, USA},
6752}
6753
6754@inproceedings{Leissa14,
6755 title = {{S}ierra: a {SIMD} extension for {C}++},
6756 author = {Lei{\ss}a, Roland and Haffner, Immanuel and Hack, Sebastian},
6757 booktitle = {Proceedings of the 2014 Workshop on Workshop on programming models for SIMD/Vector processing},
6758 pages = {17-24},
6759 year = {2014},
6760 organization= {ACM}
6761}
6762
6763@inproceedings{Howard76b,
6764 keywords = {monitors},
6765 contributer = {pabuhr@plg},
6766 author = {J. H. Howard},
6767 title = {Signaling in Monitors},
6768 booktitle = {Proceedings Second International Conference Software Engineering},
6769 address = {San Francisco, U.S.A},
6770 publisher = {IEEE Computer Society},
6771 month = oct,
6772 year = 1976,
6773 pages = {47-52}
6774}
6775
6776@techreport{Schemenauer01,
6777 keywords = {Phthon, generator, coroutine},
6778 contributer = {pabuhr@plg},
6779 author = {Neil Schemenauer and Tim Peters and Magnus Lie Hetland},
6780 title = {Simple Generators},
6781 month = may,
6782 year = 2001,
6783 note = {\href{http://www.python.org/peps/pep-0255.html}{http://\-www.python.org/\-peps/\-pep-0255.html}},
6784}
6785
6786@inproceedings{Michael96,
6787 keywords = {compare_and_swap, concurrent queue, lock-free, multiprogramming, non-blocking},
6788 contributer = {pabuhr@plg},
6789 author = {Maged M. Michael and Michael L. Scott},
6790 title = {Simple, Fast, and Practical Non-blocking and Blocking Concurrent Queue Algorithms},
6791 booktitle = {Proceedings of the Fifteenth Annual ACM Symposium on Principles of Distributed Computing},
6792 series = {PODC'96},
6793 year = 1996,
6794 location = {Philadelphia, Pennsylvania, USA},
6795 pages = {267--275},
6796 numpages = {9},
6797 publisher = {ACM},
6798 address = {New York, NY, USA},
6799}
6800
6801@article{Pennello80,
6802 contributer = {a3moss@uwaterloo.ca},
6803 author = {Pennello, Tom and DeRemer, Frank and Meyers, Richard},
6804 title = {A Simplified Operator Identification Scheme for {Ada}},
6805 journal = {SIGPLAN Notices},
6806 issue_date = {July-August 1980},
6807 volume = {15},
6808 number = {7 and 8},
6809 month = jul,
6810 year = {1980},
6811 issn = {0362-1340},
6812 pages = {82--87},
6813 numpages = {6},
6814 url = {http://doi.acm.org/10.1145/947680.947688},
6815 doi = {10.1145/947680.947688},
6816 publisher = {ACM},
6817 address = {New York, NY, USA},
6818}
6819
6820@inproceedings{Dice10,
6821 keywords = {hardware, synchronization, transactional memory},
6822 author = {Dave Dice and Yossi Lev and Virendra J. Marathe and Mark Moir and Dan Nussbaum and Marek Olszewski},
6823 title = {Simplifying Concurrent Algorithms by Exploiting Hardware Transactional Memory},
6824 booktitle = {Proceedings of the Twenty-second Annual ACM Symposium on Parallelism in Algorithms and Architectures},
6825 series = {SPAA'10},
6826 year = 2010,
6827 location = {Thira, Santorini, Greece},
6828 pages = {325-334},
6829 numpages = {10},
6830 publisher = {ACM},
6831 address = {New York, NY, USA},
6832}
6833
6834@article{PDM:overload,
6835 keywords = {compilation},
6836 contributer = {gjditchfield@plg},
6837 author = {Tom Pennello and Frank DeRemer and Richard Meyers},
6838 title = {A Simplified Operator Identification Scheme for {Ada}},
6839 journal = sigplan,
6840 year = 1980,
6841 month = {July--August},
6842 volume = 15,
6843 number = {7/8},
6844 pages = {82-87},
6845 comment = {
6846 The two-pass (bottom-up, top-down) overload resolution algorithm
6847 for Ada, with a proof that two passes suffice and a claim that two
6848 are necessary. See \cite{D:overload}.
6849 }
6850}
6851
6852@book{SimulaBegin,
6853 author = {Graham M. Birtwistle and Ole-Johan Dahl and Bj{\o}rn Myhrhaug and Kristen Nygaard},
6854 title = {{SIMULA} begin},
6855 publisher = {Studentlitteratur},
6856 year = {1980},
6857 address = {Lund, Sweden},
6858 edition = {2nd},
6859}
6860
6861@book{Simula67,
6862 author = {O-J Dahl and B. Myhrhaug and K. Nygaard},
6863 title = {Simula67 Common Base Language},
6864 month = oct,
6865 year = 1970,
6866 publisher = {Norwegian Com\-puting Center},
6867 address = {Oslo Norway},
6868}
6869
6870@book{smalltalk,
6871 keywords = {Smalltalk, abstract class, protocol},
6872 contributer = {gjditchfield@plg},
6873 author = {A. Goldberg and D. Robson},
6874 title = {Smalltalk-80: The Language and its Implementation},
6875 publisher = {Addison-Wesley},
6876 address = {Reading},
6877 year = 1983
6878}
6879
6880@inproceedings{Edelson92,
6881 keywords = {persistence, pointers},
6882 contributer = {pabuhr@plg},
6883 author = {Daniel R. Edelson},
6884 title = {Smart Pointers: They're Smart, but They're Not Pointers},
6885 booktitle = {USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Technical Conference Proceedings},
6886 organization= {USENIX Association},
6887 address = {Portland, Oregon, U.S.A.},
6888 month = aug,
6889 year = 1992,
6890 pages = {1-19},
6891}
6892
6893@book{SNOBOL,
6894 keywords = {SNOBOL4},
6895 contributer = {pabuhr@plg},
6896 author = {R. E. Griswold and J. F. Poage and I. P. Polonsky},
6897 title = {The SNOBOL4 Programming Language},
6898 edition = {2nd},
6899 publisher = {Prentice-Hall},
6900 address = {Englewood Cliffs},
6901 year = 1971,
6902}
6903
6904@article{Sutter05b,
6905 keywords = {concurrency},
6906 contributer = {pabuhr@plg},
6907 author = {Herb Sutter and James Larus},
6908 title = {Software and the Concurrency Revolution},
6909 journal = {Queue},
6910 year = 2005,
6911 month = sep,
6912 volume = 3,
6913 number = 7,
6914 pages = {54-62},
6915}
6916
6917@inproceedings{raytheon,
6918 keywords = {cobol},
6919 contributer = {gjditchfield@plg},
6920 author = {Robert G. Lanergan and Charles A. Grasso},
6921 title = {Software Engineering with Reusable Designs and Code},
6922 booktitle = {Workshop on Reusability in Programming},
6923 year = 1983,
6924 month = sep,
6925 pages = {224-234},
6926 organization= {{ITT} Programming},
6927 summary = {
6928 60\% of business application design and code are redundant.
6929 Three standard program plans are used. Reuse doubles productivity
6930 during development and greatly helps program comprehension during
6931 maintenance.
6932 }
6933}
6934
6935@article{Hecht86,
6936 keywords = {exception handling, robustness},
6937 contributer = {pabuhr@plg},
6938 author = {H. Hecht and M. Hecht},
6939 title = {Software Reliability in the Systems Context},
6940 journal = ieeese,
6941 year = 1986,
6942 volume = 12,
6943 number = 1,
6944 pages = {51-58},
6945}
6946
6947@inproceedings{Herlihy03,
6948 author = {Maurice Herlihy and Victor Luchangco and Mark Moir and William N. {Scherer III}},
6949 title = {Software Transactional Memory for Dynamic-sized Data Structures},
6950 booktitle = {Proceedings of the Twenty-second Annual Symposium on Principles of Distributed Computing},
6951 series = {PODC '03},
6952 year = {2003},
6953 location = {Boston, Massachusetts},
6954 pages = {92-101},
6955 numpages = {10},
6956 publisher = {ACM},
6957 address = {New York, NY, USA},
6958}
6959
6960@article{Dijkstra65a,
6961 keywords = {N-thread software-solution mutual exclusion},
6962 contributer = {pabuhr@plg},
6963 author = {Edsger W. Dijkstra},
6964 title = {Solution of a Problem in Concurrent Programming Control},
6965 journal = cacm,
6966 volume = 8,
6967 number = 9,
6968 month = sep,
6969 year = 1965,
6970 pages = {569},
6971 publisher = {ACM},
6972 address = {New York, NY, USA},
6973}
6974
6975@inproceedings{Chen05,
6976 keywords = {fixed-priority, preemption},
6977 contributer = {pabuhr@plg},
6978 author = {Jiongxiong Chen and Ashif Harji and Peter Buhr},
6979 title = {Solution Space for Fixed-Priority with Preemption Threshold},
6980 booktitle = {Proceedings of the 11th Real Time and Embedded Technology and Applications Symposium (RTAS'05)},
6981 organization= {IEEE},
6982 address = {San Francisco, CA, U.S.A},
6983 month = mar,
6984 year = 2005,
6985 pages = {385-394}
6986}
6987
6988@inproceedings{Tiemann88,
6989 keywords = {wrappers},
6990 contributer = {pabuhr@plg},
6991 author = {Michael D. Tiemann},
6992 title = {Solving the RPC problem in GNU {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
6993 booktitle = {Proceedings of the USENIX {C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}} Conference},
6994 organization= {USENIX Association},
6995 address = {Denver, Colorado, U.S.A},
6996 month = oct,
6997 year = 1988,
6998 pages = {343-361}
6999}
7000
7001@article{Smith98,
7002 keywords = {Polymorphic C},
7003 contributor = {a3moss@uwaterloo.ca},
7004 title = {A sound polymorphic type system for a dialect of {C}},
7005 author = {Smith, Geoffrey and Volpano, Dennis},
7006 journal = {Science of computer programming},
7007 volume = 32,
7008 number = {1-3},
7009 pages = {49-72},
7010 year = {1998},
7011 publisher = {Elsevier}
7012}
7013
7014@book{Campbell74,
7015 keywords = {path expressions},
7016 contributer = {pabuhr@plg},
7017 author = {R. H. Campbell and A. N. Habermann},
7018 title = {The Specification of Process Synchronization by Path Expressions},
7019 publisher = {Springer},
7020 year = 1974,
7021 volume = 16,
7022 pages = {89-102},
7023 series = {Lecture Notes in Computer Science},
7024}
7025
7026@article{Bentley85,
7027 keywords = {CSP, concurrency},
7028 contributer = {pabuhr@plg},
7029 author = {J. Bentley},
7030 title = {A Spelling Checker},
7031 journal = cacm,
7032 month = may,
7033 year = 1985,
7034 volume = 28,
7035 number = 5,
7036 pages = {456-462},
7037}
7038
7039@manual{POSIX01,
7040 keywords = {POSIX, Standard},
7041 contributer = {pabuhr@plg},
7042 key = {POSIX},
7043 title = {1003.1 Standard for Information Technology -- Portable Operating System Interface (POSIX), System Interface, Issue 6},
7044 organization= {IEEE and The Open Group},
7045 year = 2001,
7046}
7047
7048@manual{POSIX08,
7049 keywords = {POSIX, Standard},
7050 contributer = {pabuhr@plg},
7051 key = {POSIX},
7052 title = {1003.1 Standard for Information Technology -- Portable Operating System Interface (POSIX), Base Specifications, Issue 7},
7053 organization= {IEEE and The Open Group},
7054 year = 2008,
7055}
7056
7057@inproceedings{ML:NJ,
7058 keywords = {continuations, ML},
7059 contributer = {pabuhr@plg},
7060 author = {A. Appel and D. MacQueen},
7061 title = {A Standard {ML} Compiler},
7062 booktitle = {Functional Programming Languages and Computer Architecture},
7063 publisher = {Springer},
7064 series = {Lecture Notes in Computer Science},
7065 volume = 274,
7066 year = 1987,
7067 pages = {301-324},
7068}
7069
7070@techreport{MLreport,
7071 keywords = {ML, polymorphism},
7072 contributer = {pabuhr@plg},
7073 author = {R. Milner},
7074 title = {The Standard {ML} Core Language},
7075 institution = {},
7076 number = {Polymorphism II.2},
7077 month = oct,
7078 year = 1985
7079}
7080
7081@inproceedings{Ghelli,
7082 keywords = {},
7083 contributer = {gjditchfield@plg},
7084 author = {Giorgio Ghelli},
7085 title = {A Static Type System for Message Passing},
7086 crossref = "OOPSLA91",
7087 pages = {129-145},
7088 summary = {
7089 A strong, statically checked type system for object oriented
7090 languages is defined by modelling methods as overloaded functions
7091 with a "self" parameter, with dynamic overload resolution. This
7092 allows covariant method redefinition. However, if equality is
7093 covariantly redefined for Point and ColoredPoint classes, and a
7094 ColoredPoint is compared to a Point, Point equality will be used,
7095 even if self is the colored point!
7096 }
7097}
7098
7099@article{Dijkstra68b,
7100 keywords = {semaphore, P/V},
7101 contributer = {pabuhr@plg},
7102 author = {E. W. Dijkstra},
7103 title = {The Structure of the ``{THE}''--Multiprogramming System},
7104 journal = cacm,
7105 month = may,
7106 year = 1968,
7107 volume = 11,
7108 number = 5,
7109 pages = {341-346}
7110}
7111
7112@misc{Sutter15,
7113 contributer = {pabuhr@plg},
7114 author = {Herb Sutter and Bjarne Stroustrup and Gabriel Dos Reis},
7115 title = {Structured bindings},
7116 issue_date = {2015-10-14},
7117 month = oct,
7118 year = 2015,
7119 pages = {1-6},
7120 numpages = {6},
7121 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}},
7122}
7123
7124@book{Holt78,
7125 keywords = {operating systems, concurrency},
7126 contributer = {pabuhr@plg},
7127 author = {R. C. Holt and G. S. Graham and E. D. Lazowska and M. A. Scott},
7128 title = {Structured Concurrent Programming with Operating System Applications},
7129 publisher = {Addison-Wesley},
7130 address = {Boston},
7131 year = 1978,
7132}
7133
7134@article{Stevens74,
7135 keywords = {coupling, cohesion},
7136 contributer = {pabuhr@plg},
7137 author = {W. P. Stevens and and G. J. Myers and L. L. Constantine},
7138 title = {Structured Design},
7139 journal = ibmsj,
7140 year = 1974,
7141 volume = 13,
7142 number = 2,
7143 pages = {115-139},
7144}
7145
7146@article{Hansen72b,
7147 keywords = {critical region},
7148 contributer = {pabuhr@plg},
7149 author = {Per {Brinch Hansen}},
7150 title = {Structured Multiprogramming},
7151 journal = cacm,
7152 volume = 15,
7153 number = 7,
7154 month = jul,
7155 year = 1972,
7156 pages = {574-578},
7157}
7158
7159@article{Knuth74,
7160 keywords = {structured programming, goto statement},
7161 contributer = {pabuhr@plg},
7162 author = {Donald E. Knuth},
7163 title = {Structured Programming with go to Statements},
7164 journal = acmcs,
7165 volume = 6,
7166 number = 4,
7167 month = dec,
7168 year = 1974,
7169 pages = {261-301},
7170 issn = {0360-0300},
7171 doi = {http://doi.acm.org/10.1145/356635.356640},
7172 publisher = {ACM},
7173 address = {New York, NY, USA},
7174}
7175
7176@article{Lang98,
7177 keywords = {real-time, exception handling},
7178 contributer = {pabuhr@plg},
7179 author = {Jun Lang and David B. Stewart},
7180 title = {A Study of the Applicability of Existing Exception-Handling Techniques to Component-Based Real-Time Software Technology},
7181 journal = toplas,
7182 month = mar,
7183 year = 1998,
7184 volume = 20,
7185 number = 2,
7186 pages = {274-301},
7187}
7188
7189@mastersthesis{Fortier89,
7190 keywords = {monitors},
7191 contributer = {pabuhr@plg},
7192 author = {Michel Fortier},
7193 title = {Study of Monitors},
7194 school = {Department of Computer Science, University of Waterloo},
7195 year = 1989,
7196 address = {Waterloo, Ontario, Canada, N2L 3G1},
7197}
7198
7199@techreport{AmadioCardelli,
7200 keywords = {},
7201 contributer = {gjditchfield@plg},
7202 author = {Roberto M. Amadio and Luca Cardelli},
7203 title = {Subtyping Recursive Types},
7204 institution = {Digital Equipment Corporation Systems Research Center},
7205 year = 1990,
7206 address = {130 Lytton Avenue, Palo Alto, California 94301},
7207 month = aug,
7208 number = 62,
7209 summary = {
7210 \[ (s \leq t \Rightarrow \alpha \leq \beta) \Rightarrow
7211 \mu s.\alpha leq \mu t.\beta \]
7212 \[ \alpha = C[\alpha] \and \beta = C[\beta] \and C contractive
7213 \Rightarrow \alpha = \beta \]
7214 where a type \(\alpha\) is contractive in the type variable \(t\)
7215 if either \(t\) does not occur free in \(\alpha\), or \(\alpha\)
7216 can be rewritten via unfolding as a type of the shape
7217 \(\alpha_1 \rightarrow \alpha_2\), and unfolding rewrites
7218 \(\mu t.\alpha\) as \([t\leftarrow\mu t.\alpha]\alpha\). An
7219 algorithm for finding type contexts \(C\) is given.
7220 }
7221}
7222
7223@techreport{Dijkstra80,
7224 keywords = {split binary semaphores, general to binary},
7225 contributer = {pabuhr@plg},
7226 author = {Edsger W. Dijkstra},
7227 title = {The Superfluity of the General Semaphore},
7228 institution = {Nuenen},
7229 address = {Netherlands},
7230 number = {EWD734},
7231 month = apr,
7232 year = 1980,
7233}
7234
7235@inproceedings{Burns81,
7236 keywords = {N-thread software-solution mutual exclusion},
7237 contributer = {pabuhr@plg},
7238 author = {James E. Burns},
7239 title = {Symmetry in Systems of Asynchronous Processes},
7240 booktitle = {22nd Annual Symposium on Foundations of Computer Science, Nashville, TN, USA},
7241 year = 1981,
7242 month = oct,
7243 organization= {IEEE Computer Society},
7244 address = {Los Angeles, CA, USA},
7245 pages = {169-174},
7246}
7247
7248@article{Coffman71,
7249 keywords = {deadlock},
7250 contributer = {pabuhr@plg},
7251 author = {E. G. {Coffman, Jr.} and M. J. Elphick and A. Shoshani},
7252 title = {System Deadlocks},
7253 journal = acmcs,
7254 volume = 3,
7255 number = 2,
7256 month = jun,
7257 year = 1971,
7258 pages = {67-78},
7259 publisher = {ACM Press},
7260 address = {New York, NY, USA},
7261 doi = {http://doi.acm.org/10.1145/356586.356588},
7262}
7263
7264@phdthesis{Holmes99,
7265 keywords = {synchronization, inheritance anomaly},
7266 contributer = {pabuhr@plg},
7267 author = {David Holmes},
7268 title = {Synchronisation Rings: Composable Synchronisation for Object-Oriented Systems},
7269 school = {Department of Computing, Macquarie University},
7270 month = oct,
7271 year = 1999,
7272 address = {Sydney, Australia},
7273}
7274
7275@book{Taubenfeld06,
7276 keywords = {concurrency, synchronization},
7277 author = {Gadi Taubenfeld},
7278 title = {Synchronization Algorithms and Concurrent Programming},
7279 publisher = {Pearson/Prentice-Hall},
7280 address = {Harlow, England},
7281 year = 2006,
7282}
7283
7284@article{Buhr92b,
7285 keywords = {concurrency, exception handling, interventions},
7286 contributer = {pabuhr@plg},
7287 author = {Peter A. Buhr and Hamish I. Macdonald and C. Robert Zarnke},
7288 title = {Synchronous and Asynchronous Handling of Abnormal Events in the $\mu${S}ystem},
7289 journal = spe,
7290 volume = 22,
7291 number = 9,
7292 month = sep,
7293 year = 1992,
7294 pages = {735-776},
7295}
7296
7297@inproceedings{Greenwald96,
7298 keywords = {compare and swap, hardware atomicity},
7299 contributer = {pabuhr@plg},
7300 author = {Michael Greenwald and David Cheriton},
7301 title = {The Synergy between Non-blocking Synchronization and Operating System Structure},
7302 booktitle = {Proceedings of the Second USENIX Symposium on Operating Systems Design and Implementation},
7303 organization= {USENIX Association},
7304 address = {Seattle, Washington, U.S.A.},
7305 month = oct,
7306 year = 1996,
7307 pages = {123-136},
7308}
7309
7310@inbook{SunLWP,
7311 keywords = {light-weight processes, threads},
7312 contributer = {pabuhr@plg},
7313 key = {Sun},
7314 title = {System Services Overview, Lightweight Processes},
7315 chapter = {6},
7316 pages = {71-111},
7317 publisher = {Sun Microsystems},
7318 month = may,
7319 year = 1988,
7320 note = {available as Part Number: 800-1753-10},
7321}
7322
7323@article{Randell75,
7324 contributer = {pabuhr@plg},
7325 author = {Brian Randell},
7326 title = {System Structure for Software Fault Tolerance},
7327 journal = ieeese,
7328 volume = {SE-1},
7329 number = 2,
7330 month = jun,
7331 year = 1975,
7332 pages = {220-232},
7333}
7334
7335@book{Modula-3,
7336 keywords = {language reference manual},
7337 contributer = {pabuhr@plg},
7338 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},
7339 title = {Systems Programming with Modula-3},
7340 publisher = {Prentice-Hall},
7341 address = {Englewood Cliffs},
7342 year = 1991,
7343 series = {Prentice-Hall Series in Innovative Technology}
7344}
7345
7346@article{SysVABI,
7347 keywords = {System V ABI},
7348 contributer = {a3moss@uwaterloo.ca},
7349 title={System {V} application binary interface},
7350 author={Matz, Michael and Hubicka, Jan and Jaeger, Andreas and Mitchell, Mark},
7351 journal={AMD64 Architecture Processor Supplement, Draft v0},
7352 volume={99},
7353 year={2013}
7354}
7355
7356% T
7357
7358@article{Yeager91,
7359 keywords = {teaching, concurrency},
7360 contributer = {pabuhr@plg},
7361 author = {Dorian P. Yeager},
7362 title = {Teaching Concurrency in the Programming Languages Course},
7363 journal = {SIGCSE BULLETIN},
7364 volume = 23,
7365 number = 1,
7366 month = mar,
7367 year = 1991,
7368 pages = {155-161},
7369 note = {The Papers of the Twenty-Second SIGCSE Technical Symposium on Computer Science Education,
7370 March. 7--8, 1991, San Antonio, Texas, U.S.A.},
7371}
7372
7373@article{ml,
7374 keywords = {ML, polymorphism},
7375 contributer = {gjditchfield@plg},
7376 author = {Robin Milner},
7377 title = {A Theory of Type Polymorphism in Programming},
7378 journal = jcss,
7379 year = 1978,
7380 volume = 17, pages = {348-375}
7381}
7382
7383@book{Thoth,
7384 keywords = {messages, concurrency},
7385 contributer = {pabuhr@plg},
7386 author = {D. R. Cheriton},
7387 title = {The Thoth System: Multi-Process Structuring and Portability},
7388 publisher = {American Elsevier},
7389 year = 1982
7390}
7391
7392@article{Boehm05,
7393 keywords = {concurrency, C++},
7394 contributer = {pabuhr@plg},
7395 author = {Hans-J. Boehm},
7396 title = {Threads Cannot be Implemented as a Library},
7397 journal = sigplan,
7398 volume = 40,
7399 number = 6,
7400 month = jun,
7401 year = 2005,
7402 pages = {261-268},
7403}
7404
7405@misc{TIOBE,
7406 contributer = {pabuhr@plg},
7407 key = {TIOBE Index},
7408 author = {{TIOBE Index}},
7409 howpublished= {\href{http://www.tiobe.com/tiobe_index}{http://\-www.tiobe.com/\-tiobe\_index}},
7410}
7411
7412@misc{ThreadModel,
7413 contributer = {pabuhr@plg},
7414 key = {ThreadModel},
7415 title = {Thread (computing)},
7416 author = {{Threading Model}},
7417 howpublished= {\href{https://en.wikipedia.org/wiki/Thread_(computing)}{https://\-en.wikipedia.org/\-wiki/\-Thread\_(computing)}},
7418}
7419
7420@misc{Bumbulis90,
7421 keywords = {parameter inference, ForceN},
7422 contributer = {gjditchfield@plg},
7423 author = {Peter Bumbulis},
7424 title = {Towards Making Signatures First-Class},
7425 howpublished= {personal communication},
7426 month = sep,
7427 year = 1990,
7428}
7429
7430@techreport{alphard:preempt,
7431 keywords = {},
7432 contributer = {gjditchfield@plg},
7433 author = {Mary Shaw and Wm. A. Wulf},
7434 title = {Toward Relaxing Assumptions in Languages and Their Implementations},
7435 institution = {Carnegie-Mellon University},
7436 year = 1980,
7437 month = jan,
7438 note = {Reprinted in \cite{alphard}.}
7439}
7440
7441@inproceedings{Reynolds74,
7442 keywords = {universal quantification, typed lambda calculus},
7443 contributer = {gjditchfield@plg},
7444 author = {John C. Reynolds},
7445 title = {Towards a Theory of Type Structure},
7446 booktitle = {Colloque sur la Programmation},
7447 year = 1974,
7448 pages = {408-423},
7449 editor = {B. Robinet},
7450 publisher = {Springer},
7451 note = {Lecture Notes in Computer Science, v. 19},
7452 abstract = {
7453
7454 }
7455}
7456
7457@incollection{Hoare72,
7458 keywords = {critical region, concurrency},
7459 contributer = {pabuhr@plg},
7460 author = {C. A. R. Hoare},
7461 title = {Towards a Theory of Parallel Programming},
7462 booktitle = {Operating Systems Techniques},
7463 editor = {C. A. R. Hoare and R. H. Perott},
7464 publisher = {Academic Press, New York},
7465 year = 1972,
7466 pages = {61-71},
7467}
7468
7469@inproceedings{Mitchell90,
7470 keywords = {polymorphism, lambda calculus, bounded quantification},
7471 contributer = {gjditchfield@plg},
7472 author = {John C. Mitchell},
7473 title = {Toward a Typed Foundation for Method Specialization and Inheritance},
7474 booktitle = {Conference Record of the Seventeenth Annual ACM Symposium
7475 on Principles of Programming Languages},
7476 year = 1990,
7477 month = jan, pages = {109-124},
7478 organization= {Association for Computing Machinery},
7479 abstract = {
7480 This paper disucsses the phenomenon of {\em method specialization}
7481 in object-oriented programming languages. A typed function
7482 calculus of objects and classes is presented, featuring method
7483 specialization when methods are added or redefined. The soundness
7484 of the typing rules (without subtyping) is suggested by a
7485 translation into a more traditional calculus with
7486 recursively-defined record types. However, semantic questions
7487 regarding the subtype relation on classes remain open.
7488 }
7489}
7490
7491@article{EL1,
7492 keywords = {polymorphism},
7493 contributer = {pabuhr@plg},
7494 author = {B. Wegbreit},
7495 title = {The Treatment of Data Types in {EL1}},
7496 journal = cacm,
7497 volume = 17,
7498 number = 5,
7499 month = may,
7500 year = 1974,
7501 pages = {251-264},
7502}
7503
7504@mastersthesis{Till89,
7505 keywords = {C, multiple return values, tuples},
7506 contributer = {pabuhr@plg},
7507 author = {David W. Till},
7508 title = {Tuples In Imperative Programming Languages},
7509 school = {Department of Computer Science, University of Waterloo},
7510 year = 1989,
7511 address = {Waterloo, Ontario, Canada, N2L 3G1},
7512}
7513
7514@article{turing:old,
7515 keywords = {verification, context conditions, faithful execution},
7516 contributer = {gjditchfield@plg},
7517 author = {R. C. Holt and J. R. Cordy},
7518 title = {The Turing Programming Language},
7519 journal = cacm,
7520 year = 1988,
7521 month = dec,
7522 volume = 31, number = 12, pages = {1410-1423}
7523}
7524
7525@book{Turing,
7526 keywords = {verification, context conditions, faithful execution},
7527 contributer = {pabuhr@plg},
7528 author = {R. C. Holt},
7529 title = {Turing Reference Manual},
7530 publisher = {Holt Software Associates Inc.},
7531 year = 1992,
7532 edition = {3rd},
7533}
7534
7535@techreport{Dijkstra79,
7536 keywords = {split binary semaphores},
7537 contributer = {pabuhr@plg},
7538 author = {Edsger W. Dijkstra},
7539 title = {A Tutorial on the Split Binary Semaphore},
7540 institution = {Nuenen},
7541 address = {Netherlands},
7542 number = {EWD703},
7543 month = mar,
7544 year = 1979,
7545}
7546
7547@book{pldesign,
7548 keywords = {},
7549 editor = {Anthony I. Wasserman},
7550 title = {Tutorial: Programming Language Design},
7551 publisher = {Computer Society Press},
7552 address = {Los Alamitos},
7553 year = 1980
7554}
7555
7556@misc{TraceCompass,
7557 contributer = {pabuhr@plg},
7558 key = {Trace Compass},
7559 author = {{T}race {C}ompass},
7560 howpublished= {\href{https://projects.eclipse.org/proposals/trace-compass}{https://\-projects.eclipse.org/\-proposals/\-trace-compass}},
7561}
7562
7563@article{Leroy00,
7564 keywords = {type-systems, exceptions},
7565 contributer = {pabuhr@plg},
7566 author = {Xavier Leroy and Fran\c{c}ois Pessaux},
7567 title = {Type-Based Analysis of Uncaught Exceptions},
7568 journal = toplas,
7569 month = mar,
7570 year = 2000,
7571 volume = 22,
7572 number = 2,
7573 pages = {340-377},
7574 comment = {
7575 Argues against declaring exceptions on routine definitions.
7576 },
7577}
7578
7579@article{Cormack90,
7580 keywords = {polymorphism},
7581 contributer = {pabuhr@plg},
7582 author = {G. V. Cormack and A. K. Wright},
7583 title = {Type-dependent Parameter Inference},
7584 journal = sigplan,
7585 volume = 25,
7586 number = 6,
7587 month = jun,
7588 publisher = {ACM},
7589 address = {New York, NY, USA},
7590 year = 1990,
7591 pages = {127-136},
7592 note = {Proceedings of the ACM Sigplan'90 Conference on Programming Language Design and Implementation
7593 June 20-22, 1990, White Plains, New York, U.S.A.},
7594}
7595
7596@article{concatenation,
7597 keywords = {record concatenation, isa},
7598 contributer = {gjditchfield@plg},
7599 author = {N. Wirth},
7600 title = {Type Extensions},
7601 journal = toplas,
7602 volume = {10},
7603 number = {2},
7604 pages = {204-214},
7605 month = apr, year = 1988,
7606 comment = {
7607 Extended record types add fields to their base record. Assignment
7608 truncations. Pointers can point at extended type instances. For
7609 polymorphism, call by value is assignment, and call by reference is
7610 pointer passing. Overloading isn't discussed. Type information
7611 can be recovered through an ``is'' type test or through type guards
7612 (casts). A version of the WITH statement could avoid repeated
7613 checking.
7614
7615 Private/public access to record fields can be provided by exporting
7616 a base type, and using a private extension. Statically allocated
7617 instances need a compiler hint specifying the maximum size of the
7618 private type.
7619
7620 Type checking is cheap (if the creation of pointer values is
7621 controlled). Types have type descriptors. Extension descriptors
7622 point at their direct base. Heap objects point at their
7623 descriptor, and reference parameters are accompanied by type
7624 descriptor parameters. ``v is t0'' loops along the chain of
7625 descriptors.
7626 }
7627}
7628
7629% U
7630
7631@book{uC++book,
7632 keywords = {control structure, concurrency, uC++},
7633 contributer = {pabuhr@plg},
7634 author = {Peter A. Buhr},
7635 title = {Understanding Control Flow: Concurrent Programming using $\mu${C}{\kern-.1em\hbox{\large\texttt{+\kern-.25em+}}}},
7636 publisher = {Springer},
7637 address = {Switzerland},
7638 year = 2016,
7639}
7640
7641@article{Cardelli85,
7642 keywords = {polymorphism},
7643 contributer = {pabuhr@plg},
7644 author = {Luca Cardelli and Peter Wegner},
7645 title = {On Understanding Types, Data Abstractions, and Polymorphism},
7646 journal = acmcs,
7647 month = dec,
7648 year = 1985,
7649 volume = 17,
7650 number = 4,
7651 pages = {471-522},
7652}
7653
7654@inproceedings{Wilson92,
7655 keywords = {garbage collection survey},
7656 contributer = {pabuhr@plg},
7657 author = {Paul R. Wilson},
7658 title = {Uniprocessor Garbage Collection Techniques},
7659 booktitle = {Proceedings of the International Workshop on Memory Management},
7660 location = {St. Malo, France},
7661 publisher = {Springer},
7662 series = {Lecture Notes in Computer Science},
7663 volume = 637,
7664 month = sep,
7665 year = {1992},
7666 pages = {1-42},
7667}
7668
7669@inproceedings{Hewitt73,
7670 author = {Carl Hewitt and Peter Bishop and Richard Steiger},
7671 title = {A Universal Modular {ACTOR} Formalism for Artificial Intelligence},
7672 booktitle = {Proceedings of the 3rd International Joint Conference on Artificial Intelligence},
7673 address = {Standford, California, U.S.A.},
7674 pages = {235-245},
7675 month = aug,
7676 year = 1973,
7677}
7678
7679@article{Bourne78,
7680 keywords = {Shell},
7681 contributer = {pabuhr@plg},
7682 author = {S. R. Bourne},
7683 title = {The UNIX Shell},
7684 journal = {The Bell System Technical Journal},
7685 volume = {57, part 2},
7686 month = {July--August},
7687 year = 1978,
7688 pages = {1971-1990},
7689}
7690
7691@inproceedings{Krischer12,
7692 keywords = {exception, usability, asynchronous, assertion, injection, logging},
7693 contributer = {pabuhr@plg},
7694 author = {Roy Krischer and Peter A. Buhr},
7695 title = {Usability Challenges in Exception Handling},
7696 booktitle = {5th International Workshop on Exception Handling (WEH)},
7697 optorganization= {16th International Symposium on the Foundations of Software Engineering (FSE 16)},
7698 address = {Zurich, Switzerland},
7699 month = jun,
7700 year = 2012,
7701 pages = {7-13},
7702}
7703
7704@techreport{Harmony,
7705 keywords = {messages, concurrency},
7706 contributer = {pabuhr@plg},
7707 author = {W. Morven Gentleman},
7708 title = {Using the Harmony Operating System},
7709 institution = {National Research Council of Canada, Ottawa, Canada},
7710 number = {24685},
7711 month = may,
7712 year = 1985
7713}
7714
7715@article{delegation,
7716 keywords = {delegation, inheritance, actors},
7717 contributer = {gjditchfield@plg},
7718 author = {Henry Lieverman},
7719 title = {Using Prototypical Objects to Implement Shared Behavior in
7720 Object Oriented Systems},
7721 journal = sigplan,
7722 month = nov, year = 1986,
7723 volume = 21, number = 11, pages = {214-223}
7724}
7725
7726% V
7727
7728@article{V-Kernel,
7729 keywords = {messages, concurrency},
7730 contributer = {pabuhr@plg},
7731 author = {David R. Cheriton},
7732 title = {The {V} Distributed System},
7733 journal = cacm,
7734 month = mar,
7735 year = 1988,
7736 volume = 31,
7737 number = 3,
7738 pages = {314-333}
7739}
7740
7741@misc{Vala,
7742 keywords = {GObject, Vala},
7743 contributor = {a3moss@uwaterloo.ca},
7744 key = {Vala},
7745 organization= {The {GNOME} Project},
7746 title = {{V}ala Reference Manual},
7747 year = 2017,
7748 howpublished= {\url{https://wiki.gnome.org/Projects/Vala/Manual}},
7749}
7750
7751@inproceedings{Amdahl67,
7752 author = {Gene M. Amdahl},
7753 title = {Validity of the Single Processor Approach to Achieving Large Scale Computing Capabilities},
7754 booktitle = {Proceedings of the April 18-20, 1967, Spring Joint Computer Conference},
7755 series = {AFIPS '67 (Spring)},
7756 year = 1967,
7757 location = {Atlantic City, New Jersey},
7758 pages = {483--485},
7759 publisher = {ACM},
7760 address = {New York, NY, USA},
7761}
7762
7763@article{Mayer81,
7764 keywords = {},
7765 contributer = {pabuhr@plg},
7766 author = {A. J. W. Mayer},
7767 title = {Value Receiving Procedures},
7768 journal = sigplan,
7769 volume = 16,
7770 number = 11,
7771 month = nov,
7772 year = 1981,
7773 pages = {30-34},
7774}
7775
7776@article{Doran80,
7777 keywords = {concurrency, Dekker's Algorithm},
7778 contributer = {pabuhr@plg},
7779 author = {R. W. Doran and L. K. Thomas},
7780 title = {Variants of the Software Solution to Mutual Exclusion},
7781 journal = ipl,
7782 month = jul,
7783 year = 1980,
7784 volume = 10,
7785 number = {4/5},
7786 pages = {206-208},
7787}
7788
7789@book{VAX,
7790 keywords = {VAX, DEC},
7791 contributer = {pabuhr@plg},
7792 key = {VAX},
7793 title = {VAX-11 Architecture Reference Manual},
7794 publisher = {Digital Press},
7795 address = {Bedford},
7796 month = may,
7797 year = 1982,
7798}
7799
7800@book{Kenah88,
7801 author = {Lawrence J. Kenah and Ruth E. Goldenberg and Simon F. Bate},
7802 title = {{VAX/VMS} Internals and Data Structures Version 4.4},
7803 publisher = {Digital Press},
7804 address = {Bedford},
7805 year = 1988,
7806}
7807
7808@article{Hesselink13,
7809 keywords = {software solutions, N-thread, mutual exclusions},
7810 contributer = {pabuhr@plg},
7811 author = {Wim H. Hesselink},
7812 title = {Verifying a Simplification of Mutual Exclusion by {L}ycklama--{H}adzilacos},
7813 journal = {Acta Informatica},
7814 publisher = {Springer},
7815 address = {New York},
7816 year = {2013},
7817 volume = {50},
7818 number = {3},
7819 pages = {199-228},
7820}
7821
7822% W
7823
7824@article{Herlihy91,
7825 keywords = {linearization, wait-free synchronization},
7826 contributer = {pabuhr@plg},
7827 author = {Maurice Herlihy},
7828 title = {Wait-free Synchronization},
7829 journal = toplas,
7830 volume = {13},
7831 number = {1},
7832 month = jan,
7833 year = 1991,
7834 pages = {124--149},
7835 numpages = {26},
7836 publisher = {ACM},
7837 address = {New York, NY, USA},
7838}
7839
7840@inproceedings{vonBehren03,
7841 keywords = {threads, events, web server},
7842 contributer = {pabuhr@plg},
7843 author = {Rob von Behren and Jeremy Condit and Eric Brewer},
7844 title = {Why Events Are a Bad Idea (for high-concurrency servers)},
7845 booktitle = {HotOS IX: The 9th Workshop on Hot Topics in Operating Systems},
7846 publisher = {USENIX Association},
7847 address = {Lihue, Hawaii, U.S.A.},
7848 month = may,
7849 year = 2003,
7850 pages = {19-24},
7851}
7852
7853@techreport{Moss90,
7854 keywords = {Swizzling, database},
7855 contributer = {akgoel@plg},
7856 author = {J. Moss},
7857 title = {Working with Persistent Objects: To Swizzle or Not to Swizzle},
7858 institution = {CS Department, University of Massachusetts},
7859 address = {},
7860 number = {CS 90-38},
7861 month = may,
7862 year = 1990,
7863}
7864
7865@inproceedings{Str:oop,
7866 keywords = { },
7867 contributer = {pabuhr@plg},
7868 author = {Bjarne Stroustrup},
7869 title = {What is ``Object-Oriented Programming''?},
7870 booktitle = {Proceedings of the First European Conference on Object Oriented Programming},
7871 month = jun,
7872 year = 1987
7873}
7874
7875@misc{Stroustrup:overloading,
7876 keywords = {operator overloading},
7877 contributer = {pabuhr@plg},
7878 author = {Bjarne Stroustrup},
7879 title = {Why can't I overload dot, ::, sizeof, etc.?},
7880 month = oct,
7881 year = 2007,
7882 howpublished= {{\small\textsf{http://\-www.research.att.com/\-bs/\-bs\_faq2.html\-\#overload-dot}}},
7883}
7884
7885@techreport{Gray85,
7886 keywords = {fault-tolerant system},
7887 contributer = {pabuhr@plg},
7888 author = {Jim Gray},
7889 title = {Why Do Computers Stop and What Can Be Done About It?},
7890 institution = {Tandem Computers},
7891 number = {85.7 PN87614},
7892 month = jun,
7893 year = 1985,
7894 note = {\href{http://www.hpl.hp.com/techreports/tandem/TR-85.7.pdf}{http://www.hpl.hp.com/\-techreports/\-tandem/\-TR-85.7.pdf}},
7895}
7896
7897@article{Tarjan84,
7898 keywords = {union-find},
7899 contributer = {a3moss@uwaterloo.ca},
7900 author = {Tarjan, Robert E. and van Leeuwen, Jan},
7901 title = {Worst-case Analysis of Set Union Algorithms},
7902 journal = {J. ACM},
7903 issue_date = {April 1984},
7904 volume = 31,
7905 number = 2,
7906 month = mar,
7907 year = 1984,
7908 issn = {0004-5411},
7909 pages = {245--281},
7910 numpages = {37},
7911 url = {http://doi.acm.org/10.1145/62.2160},
7912 doi = {10.1145/62.2160},
7913 acmid = {2160},
7914 publisher = {ACM},
7915 address = {New York, NY, USA},
7916}
7917
7918% X
7919
7920% Y
7921
7922@article{Boehm12,
7923 keywords = {memory model, race condition},
7924 contributer = {pabuhr@plg},
7925 author = {Boehm, Hans-J. and Adve, Sarita V.},
7926 title = {You Don'T Know Jack About Shared Variables or Memory Models},
7927 journal = cacm,
7928 volume = 55,
7929 number = 2,
7930 month = feb,
7931 year = 2012,
7932 pages = {48--54},
7933 publisher = {ACM},
7934 address = {New York, NY, USA},
7935}
7936
7937% Z
7938
7939% Cross-referenced entries:
7940
7941% O
7942
7943% The SIGPLAN Notices issue should be in a note field, but notes are
7944% inherited by all refering entries, instead of being held in the
7945% cross-referenced entry. Putting it in "publisher" is a kludge, but it
7946% works.
7947@proceedings{OOPSLA86,
7948 contributer = {gjditchfield@plg},
7949 title = {{OOPSLA} '86 Conference Proceedings},
7950 booktitle = {{OOPSLA} '86 Conference Proceedings},
7951 year = 1986,
7952 editor = {Norman Meyrowitz},
7953 publisher = sigplan,
7954 organization= {Association for Computing Machinery},
7955 address = {Portland, Oregon},
7956 month = sep,
7957}
7958
7959@proceedings{OOPSLA87,
7960 contributer = {gjditchfield@plg},
7961 title = {{OOPSLA} '87 Conference Proceedings},
7962 booktitle = {{OOPSLA} '87 Conference Proceedings},
7963 year = 1987,
7964 editor = {Norman Meyrowitz},
7965 publisher = sigplan,
7966 organization= {Association for Computing Machinery},
7967 address = {Orlando, Florida},
7968 month = oct,
7969}
7970
7971@proceedings{OOPSLA88,
7972 contributer = {gjditchfield@plg},
7973 title = {{OOPSLA} '88 Conference Proceedings},
7974 booktitle = {{OOPSLA} '88 Conference Proceedings},
7975 year = 1988,
7976 editor = {Norman Meyrowitz},
7977 publisher = sigplan,
7978 organization= {Association for Computing Machinery},
7979 address = {San Diego, California},
7980 month = sep,
7981}
7982
7983@proceedings{OOPSLA89,
7984 contributer = {gjditchfield@plg},
7985 title = {{OOPSLA} '89 Conference Proceedings},
7986 booktitle = {{OOPSLA} '89 Conference Proceedings},
7987 year = 1989,
7988 editor = {Norman Meyrowitz},
7989 publisher = sigplan,
7990 organization= {Association for Computing Machinery},
7991 address = {New Orleans, Louisiana},
7992 month = oct,
7993}
7994
7995@proceedings{OOPSLA90,
7996 contributer = {gjditchfield@plg},
7997 title = {{OOPSLA/ECOOP} '90 Conference Proceedings},
7998 booktitle = {{OOPSLA} '90 Conference Proceedings},
7999 year = 1990,
8000 editor = {Norman Meyrowitz},
8001 publisher = sigplan,
8002 organization= {Association for Computing Machinery},
8003 address = {Ottawa, Canada},
8004 month = oct,
8005}
8006
8007@proceedings{OOPSLA91,
8008 contributer = {gjditchfield@plg},
8009 title = {{OOPSLA} '91 Conference Proceedings},
8010 booktitle = {{OOPSLA} '91 Conference Proceedings},
8011 year = 1991,
8012 editor = {Andreas Paepcke},
8013 publisher = sigplan,
8014 organization= {Association for Computing Machinery},
8015 address = {Phoenix, Arizona},
8016 month = oct,
8017}
Note: See TracBrowser for help on using the repository browser.