-
Notifications
You must be signed in to change notification settings - Fork 20
/
page9.scm
1247 lines (1134 loc) · 118 KB
/
page9.scm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
(group "Distributed, Parallel, and Concurrent Programming")
(group "Scheme Dialects for Distributed Programming")
(id germain2006termite)
(type inproceedings)
(title "Concurrency oriented programming in Termite Scheme")
(author "Germain, Guillaume")
(author "Feeley, Marc")
(author "Monnier, Stefan")
(booktitle "2006 Workshop on Scheme and Functional Programming")
(pages "20")
(year 2006)
(month 9)
(organization "Citeseer")
(pdf-sha1 "55088ec7fa27a01ddfe42566baacb2c7ca6e7e4c")
(pdf "http://schemeworkshop.org/2006/09-germain.pdf")
(pdf "https://www.iro.umontreal.ca/~feeley/papers/GermainFeeleyMonnierSW06.pdf")
(pdf "http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.125.1527&rep=rep1&type=pdf")
(abstract "Termite Scheme is a variant of Scheme intended for distributed computing. It offers a simple and powerful concurrency model, inspired by the Erlang programming language, which is based on a message-passing model of concurrency." "Our system is well suited for building custom protocols and abstractions for distributed computation. Its open network model allows for the building of non-centralized distributed applications." "The possibility of failure is reflected in the model, and ways to handle failure are available in the language. We exploit the existence of first class continuations in order to allow the expression of high-level concepts such as process migration." "We describe the Termite model and its implications, how it compares to Erlang, and describe sample applications built with Termite. We conclude with a discussion of the current implementation and its performance.")
(id pierard2007mobit)
(type inproceedings)
(title "Towards a portable and mobile Scheme interpreter")
(author "Piérard, Adrien")
(author "Feeley, Marc")
(booktitle "Proceedings of the Scheme and Functional Programming Workshop")
(pages "59--68")
(year 2007)
(pdf-sha1 "9d2e159ab03066f18647927df2a2c89386eeb19f")
(pdf "https://www-labs.iro.umontreal.ca/~feeley/papers/PierardFeeleySW07.pdf")
(pdf "https://www.iro.umontreal.ca/~feeley/papers/PierardFeeleySW07.pdf")
(abstract "The transfer of program data between the nodes of a distributed system is a fundamental operation. It usually requires some form of data serialization. For a functional language such as Scheme it is clearly desirable to also allow the unrestricted transfer of functions between nodes. With the goal of developing a portable implementation of the Termite system we have designed the Mobit Scheme interpreter which supports unrestricted serialization of Scheme objects, including procedures and continuations. Mobit is derived from an existing Scheme in Scheme fast interpreter. We demonstrate how macros were valuable in transforming the interpreter while preserving its structure and maintainability. Our performance evaluation shows that the run time speed of Mobit is comparable to existing Scheme interpreters.")
(id fuchs1985dreme)
(type phdthesis)
(title "Dreme: for Life in the Net")
(author "Fuchs, Matthew")
(school "New York University")
;;(journal "Operating Systems Review")
;;(volume 19)
;;(number 5)
;;(pages "181--193")
(year 1995)
(pdf-sha1 "78c1a0651c650e2b9b17f0cf9ca8412903ea7b51")
(ps "http://www.cs.nyu.edu/csweb/Research/Theses/fuchs_matthew.ps.gz")
(pdf "http://www.cs.nyu.edu/csweb/Research/Theses/fuchs_matthew.pdf")
(pdf "https://www.math.nyu.edu/media/mathfin/publications/fuchs_matthew.pdf")
(abstract "This dissertation makes four contributions towards supporting distributed, multiuser applications over open networks." "Dreme, a distributed dialect of the Scheme language in which all first-class language objects are mobile in the network. In particular, various distributed topologies, such as client/server and peer-to-peer, can be created by migrating closures with overlapping scopes around the network, correct inter-process communication being assured by Scheme's lexical scoping rules and network wide addressing. Threads of control are passed around through first-class distributed continuations." "A User Interface toolkit for coordinating events in multi-threaded, multi-user applications by organizing continuation callbacks into nested lexical scopes. Each event has certain attributes, such as synchronous/asynchronous. Certain events create new scopes with new events. Continuation callbacks allow both synchronous events which return values to their callers, and asynchronous ones. Application needn't be spread throughout the application, as with applications using an event-loop." "A distributed garbage collection algorithm that collects all cycles on an open network. The basic algorithm depends on maintaining the inverse reference graph (IRG) among network nodes (i.e., if a->b is in the regular graph, b->a is in the IRG). A single IRG traversal from any object determines the status of each object touched. Communication is decentralized (any object can choose to determine its status), garbage is touched O(1) times (in the absence of failures), it is fault-tolerant, and can handle malicious or faulty neighbors. Each operation uses messages linear in the size of the IRG. Overlapping operations perform like parallel quick sort." "An approach to using the Standard Generalized Markup Language (SGML) over the network to support distributed GUIs, intelligent clients, and mobile agents. SGML is a meta-grammar for creating domain specific document markup languages to which a variety of semantics (display, reading/writing databases, etc.) can be applied. The document, its grammar, and some semantics, are retrieved over the network. Applications normally create interfaces directly out of graphic objects to communicate with the user. However, if the interface has some semantics (and is parsable), a computational agent can interpret the interface and talk directly to the application on behalf of the human.")
;; MIT AI Lab Technical Report AITR-1627.
(id bawden1993linear)
(type phdthesis)
(title "Implementing distributed systems using linear naming")
(author "Bawden, Alan")
(school "Massachusetts Institute of Technology")
(year 1993)
(pdf-sha1 "be25e14b2b97c5466d76ae3d519babbe9e9a7910")
(pdf "https://dspace.mit.edu/bitstream/handle/1721.1/7085/AITR-1627.pdf")
(abstract "Linear graph reduction is a simple computational model in which the cost of naming things is explicitly represented. The key idea is the notion of linearity. A name is linear if it is only used once, so with linear naming you cannot create more than one outstanding reference to an entity. As a result, linear naming is cheap to support and easy to reason about." "Programs can be translated into the linear graph reduction model such that linear names in the program are implemented directly as linear names in the model. Nonlinear names are supported by constructing them out of linear names. The translation thus exposes those places where the program uses names in expensive, nonlinear ways." "Two applications demonstrate the utility of using linear graph reduction: First, in the area of distributed computing, linear naming makes it easy to support cheap cross-network references and highly portable data structures, Linear naming also facilitates demand driven migration of tasks and data around the network without requiring explicit guidance from the programmer." "Second, linear graph reduction reveals a new characterization of the phenomenon of state. Systems in which state appears are those which depend on certain global system properties. State is not a localizable phenomenon, which suggests that our usual object oriented metaphor for state is awed.")
(id moreau1997nexeme)
(type inproceedings)
(title "NeXeme: A distributed Scheme based on Nexus")
(author "Moreau, Luc")
(author "De Roure, David")
(author "Foster, Ian")
(booktitle "European Conference on Parallel Processing")
(pages "581--590")
(year 1997)
(month 8)
(organization "Springer")
(pdf-sha1 "e7c5df4153a362c4b891d1158641bbac6c53fad1")
(ps "http://www.ecs.soton.ac.uk/~lavm/papers/rsr-europar97.ps.gz")
(pdf "https://eprints.soton.ac.uk/252758/1/rsr_europar97.pdf")
(abstract "The remote service request, a form of remote procedure call, and the global pointer, a global naming mechanism, are two features at the heart of Nexus, a library for building distributed systems. NeXeme is an extension of Scheme that fully integrates both concepts in a mostly-functional framework, hence providing an expressive language for distributed computing. This paper presents a semantics for this Scheme extension, and also describes a NeXeme implementation, including its distributed garbage collector.")
(id moreau1997quantum)
(type inproceedings)
(title "Design and Semantics of Quantum: A Language to Control Resource Consumption in Distributed Computing")
(author "Moreau, Luc")
(author "Queinnec, Christian")
(booktitle "Usenix Conference on Domain-Specific Languages (DSL'97)")
(year 1997)
(month 10)
(pdf-sha1 "91fdbf4a4430d21083f031418aa147ff8b142fa4")
(ps "http://www.ecs.soton.ac.uk/~lavm/papers/dsl97.ps.gz")
(pdf "https://www.usenix.org/legacy/publications/library/proceedings/dsl97/full_papers/moreau/moreau.pdf")
(abstract "This paper describes the semantics of Quantum, a language that was specifically designed to control resource consumption of distributed computations, such as mobile agent style applications. In Quantum, computations can be driven by mastering their resource consumption. Resources can be understood as processors cycles, geographical expansion, bandwidth or duration of communications, etc. We adopt a generic view by saying that computations need energy to be performed. Quantum relies on three new primitives that deal with energy. The first primitive creates a tank of energy associated with a computation. Asynchronous notifications inform the user of energy exhaustion and computation termination. The other two primitives allow us to implement suspension and resumption of computations by emptying a tank and by supplying more energy to a tank. The semantics takes the form of an abstract machine with explicit parallelism and energy-related primitives.")
(id moreau1997nexememanual)
(type techreport)
(title "NeXeme: A distributed Scheme based on Nexus (Reference Manual and User's Guide)")
(author "Moreau, Luc")
(institution "University of Southampton")
(year 1997)
(pdf-sha1 "666247ba661124c6f4898459ebc9c7f2d9d27f11")
(pdf "https://eprints.soton.ac.uk/250720/1/10.1.1.44.6685.pdf")
(ps "http://www.ecs.soton.ac.uk/~lavm/NeXeme/man/ug.ps")
(abstract "The remote service request, a form of remote procedure call, and the global pointer, a global naming mechanism, are two features at the heart of Nexus, a library for building distributed systems. NeXeme is an extension of Scheme that fully integrates both concepts in a mostly-functional framework, hence providing an expressive language for distributed computing. This document is both NeXeme reference manual and user's guide.")
(id queinnec1998dmeroonmanual)
(type techreport)
(title "DMeroon: A Distributed Class-based Causally-Coherent Data Model - General documentation - Revision: 1.64")
(author "Queinnec, Christian")
(institution "LIP6, Sorbonne University and CNRS")
(number "039")
(year 1998)
(pdf-sha1 "c3973145836bd2cd841219f53dc2788d71ce2c7a")
(ps-sha1 "9ce1e5c23c3a0add2109ebae1d70e9ac49aaaf84")
(ps "https://pages.lip6.fr/Christian.Queinnec/Reports/dmeroon.ps.gz")
(ps "ftp://ftp.lip6.fr/lip6/reports/1998/lip6.1998.039.ps.gz")
(abstract "DMeroon provides a data model above a coherently distributed shared memory. DMeroon allows multiple users to statically or dynamically create new classes hierarchically organized, to dynamically instantiate these classes and to dynamically and coherently share the resulting instances over a network. DMeroon automatically takes care of representation and alignment, marshaling and unmarshaling objects, migrating and sharing objects, local and global garbage collections." "This document describes DMeroon, its philosophy of design, its architecture and principles of implementation, and its bindings with various languages. It also presents some internal details within DMeroon or some applications above DMeroon." "This document tries to present the overlines of DMeroon, in places, it describes features which are not implemented, in some other places there are implemented features that are not documented. I packed it up in order for interested people to get an idea and, perhaps, induce them to pursue my effort or definitively convince me of its little value. I have a lot of lectures to prepare for the following months and will not be able to devote much time to DMeroon.")
(id queinnec1997generics)
(type inproceedings)
(title "Distributed generic functions")
(author "Queinnec, Christian")
(booktitle "Proc. 1997 France-Japan Workshop on Object-Based Parallel and Distributed Computing")
(year 1997)
(month 10)
(pdf-sha1 "c6940d7e8cf60ea211174fb2de80fccda191f6b7")
(pdf-sha1 "621309b8dcb990b9bcf41fdd3581bf5c41a18984")
(pdf "https://pdfs.semanticscholar.org/c694/0d7e8cf60ea211174fb2de80fccda191f6b7.pdf")
(pdf "https://christian.queinnec.org/PDF/gendist.pdf")
(ps "http://pagesperso-systeme.lip6.fr/Christian.Queinnec/Papers/gendist.ps.gz")
(abstract "The network now gives the opportunity to combine code and data from everywhere in the world. However, the dominant paradigm is the client/server model where immobile objects with static interfaces can only be used as prescribed by their proprietary site. While this constraint corresponds to understandable industrial programming practices, it negates the point of view of dynamic clients that collect interesting objects and want to confer new behaviors to these collected objects. How to enrich objects \"from the outside\" that is, without access to their source code hence without re-compilation of their defining classes, is the problem addressed by this paper." "Generic functions, à la CLOS, separate classes from behaviors i.e., methods. Roughly said, a generic function is a bag of methods; when a generic function is invoked, the nature (type, class or, structure) of its argument(s) triggers the choice of an appropriate method. Methods are no longer the exclusive property of classes, they are regular functions anyone may define outside classes definitions." "This paper describes how generic functions may be conveniently and not so inefficiently implemented in a distributed world. Section 1 presents some of the constraints of distributed systems. Section 2 recalls the framework of generic functions as well as how we extend them to the distributed world. Significantly, we address the problem of mutual recursion over a bag of methods to which new methods may be adjoined at run-time. We also propose a new feature: call-former-method. Section 3 discusses implementation while Section 4 eventually discusses the incorporation of these results in a real system.")
(id queinnec1996dmeroon)
(type article)
(author "Queinnec, Christian")
(title "Bribes de DMeroon")
(journal "Actes des journées de recherche sur la Mémoire Partagée Répartie")
(pages "51--56")
(volume "MPR 96")
(year 1996)
(month 5)
(abstract "Cet article est un survol fragmentaire de DMeroon, un projet inachevé de recherche visant à l'écriture d'une bibliothèque multilingue procurant un modèle de mémoire dynamique, distribuée et partagée. Rien n'est original dans cet article fors l'emploi du français. Son contenu provient de 17 et 18 amendé de réflexions décousues mais motivées par l'écriture des programmes composant cette bibliothèque.")
;; TODO: This paper also appeared in PSLS 95 - Parallel Symbolic
;; Langages and Systems. Lecture Notes in Computer Science 1068.
;; October 1995.
;;
(id queinnec1995dmeroon)
(type inproceedings)
(title "DMeroon: overview of a distributed class-based causally-coherent data model")
(author "Queinnec, Christian")
(booktitle "International Workshop on Parallel Symbolic Languages and Systems")
(pages "295--309")
(year 1995)
(organization "Springer")
(pdf-sha1 "4a520d0bdc016e0621a469399dde3f0b4b6c540c")
(pdf "http://christian.queinnec.org/PDF/psls.pdf")
(ps "https://pages.lip6.fr/Christian.Queinnec/Papers/psls.ps.gz")
(abstract "DMeroon is a library of C functions that provides a data model above a coherently distributed shared memory. DMeroon allows users to statically or dynamically create new classes, to dynamically instantiate these classes and to dynamically and coherently share the resulting instances over a network. DMeroon automatically takes care of representation and alignment, migrating and sharing objects, local and global garbage collections. This document provides an overview of DMeroon.")
(id queinnec1992icsla)
(type inproceedings)
(title "Design of a concurrent and distributed language")
(author "Queinnec, Christian")
(author "De Roure, David")
(booktitle "US/Japan Workshop on Parallel Symbolic Computing")
(pages "233--259")
(year 1992)
(organization "Springer")
(pdf-sha1 "82e4df7b20b157b756e255df615ab3d9c0f24c96")
(pdf "https://christian.queinnec.org/PDF/pwb.pdf")
(ps "https://pages.lip6.fr/Christian.Queinnec/Papers/pwb.ps.gz")
(abstract "This paper presents a new dialect of Scheme aimed towards concurrency and distribution. It offers a few primitives, including first-class continuations, with very simple semantics. Numerous examples are given showing how to program the classical concurrent control operators such as future, pcall and either. The implementation is sketched and presented along the lines of a metacircular interpreter.")
(id queinnec1992cdscheme)
(type inproceedings)
(title "A concurrent and distributed extension of Scheme")
(author "Queinnec, Christian")
(booktitle "International Conference on Parallel Architectures and Languages Europe")
(pages "431--446")
(year 1992)
(organization "Springer")
(pdf-sha1 "4144b14e1a6cd9c7c4f9f0abd62290cb9398a590")
(pdf "https://christian.queinnec.org/PDF/parle.pdf")
(ps "https://pages.lip6.fr/Christian.Queinnec/Papers/parle.ps.gz")
(abstract "The Lisp family of languages has traditionally been a privileged domain where linguistic experiments were done, this paper presents a new dialect offering concurrency and distribution. This dialect, nick-named CD-Scheme, has been designed above Scheme with as few as possible features to allow a great expressiveness but still to retain the original consistency and simplicity of Scheme. We explicitly show how common parallel constructs can be written in regular CD-Scheme." "A denotational semantics is also presented that expresses the detailed meaning of assignment, data mutation, continuations in presence of concurrency and distribution. This semantics offers a basis to understand new proposals of concurrent or distributed features and may be used to justify compiler optimizations or implementation techniques. The proposed set of features of CD-Scheme can be also used to extend languages other than Scheme.")
;; TODO: La lettre du Transputer. 16. December 1992.
(id piquer1992transpive)
(type article)
(title "TransPive: A distributed Lisp system")
(author "Piquer, José")
(author "Queinnec, Christian")
(year 1992)
(publisher "Citeseer")
(pdf-sha1 "a122aa9e4ced777966b6f848bece8d5e0a848cae")
(pdf "http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.41.8810&rep=rep1&type=pdf")
(abstract "This paper exposes an overview of a distributed Lisp system, called TransPive, designed to run on a loosely-coupled multi-processor system." "The main goal of the system is to provide a transparent distributed programming environment, sharing data structures using remote pointers, as a platform to prototype distributed algorithms and applications." "The TransPive message passing primitives create the remote pointers, with local caches for the object's value (to improve performance of read accesses). A protocol to invalidate the caches is invoked when a modifier is applied. A Distributed Garbage Collector is included on TransPive to reclaim distant pointed objects. A simple mechanism to distribute the computation over the system is also provided." "All the mechanisms have been implemented without any operating system support (as virtual memory), and so they are portable to any reliable message-passing distributed environment. In particular, the first version has been implemented on a Transputer network." "The paper is an overview of the remote pointer mechanism, the memory structures and protocols used to share data, the garbage collector and the remote process creation primitives.")
(id jagannathan1997coordination)
(type inproceedings)
(title "Communication-passing style for coordination languages")
(author "Jagannathan, Suresh")
(booktitle "International Conference on Coordination Languages and Models")
(pages "131--149")
(year 1997)
(organization "Springer")
(pdf-sha1 "b4a1809877083327d69705b484b2c6a290688cb3")
(ps "http://www.cs.purdue.edu/homes/suresh/papers/coord97.ps.gz")
(pdf "http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.39.6224&rep=rep1&type=pdf")
(abstract "Coordination languages for parallel and distributed systems specify mechanisms for creating tasks and communicating data among them. These languages typically assume that (a) once a task begins execution on some processor, it will remain resident on that processor throughout its lifetime, and (b) communicating shared data among tasks is through some form of message-passing and data migration. In this paper, we investigate an alternative approach to understanding coordination. Communication-passing style (CmPS) refers to a coordination semantics in which data communication is always undertaken by migrating the continuation of the task requiring the data to the processor where the data resides." "Communication-passing style is closely related to continuation-passing style (CPS), a useful transformation for compiling functional languages. Just as CPS eliminates implicit call-return sequences, CmPS eliminates implicit inter-processor data communication and synchronization requests. In a CmPS-transformed program, only continuations (i.e., control contexts) are transmitted across machines; all synchronization and data communication occurs locally. Besides providing significant optimization opportunities, CmPS is a natural representation for implementations on networks of workstations." "This paper presents an operational semantics for a coordination language that supports first-class distributed data repositories. The computation sublanguage considered is an untyped call-by-value functional language similar to pure Scheme. Optimizations and implementation issues that arise from using a CmPS-driven coordination language are also described.")
(id cejtin1995hodobjects)
(type article)
(title "Higher-order distributed objects")
(author "Cejtin, Henry")
(author "Jagannathan, Suresh")
(author "Kelsey, Richard")
(journal "ACM Transactions on Programming Languages and Systems (TOPLAS)")
(volume 17)
(number 5)
(pages "704--739")
(year 1995)
(publisher "ACM New York, NY, USA")
(scheme-id kali)
(pdf-sha1 "5079ee5c9af80022661138658a0f101457ca9c4c")
(ps "http://www.cs.purdue.edu/homes/suresh/papers/toplas95.ps.gz")
(pdf "https://www.researchgate.net/profile/Suresh_Jagannathan/publication/2885348_Higher-Order_Distributed_Objects/links/544008b50cf21227a11ba1ae.pdf")
(abstract "We describe a distributed implementation of Scheme that permits efficient transmission of higherorder objects such as closures and continuations. The integration of distributed communication facilities within a higher-order programming language engenders a number of new abstractions and paradigms for distributed computing. Among these are user-specified load-balancing and migration policies for threads, incrementally linked distributed computations, and parameterized client-server applications. To our knowledge, this is the first distributed dialect of Scheme (or a related language) that addresses lightweight communication abstractions for higher-order objects.")
(id dwyer1981dscheme)
(type techreport)
(title "A SCHEME for distributed processes")
(author "Dwyer, Rex A")
(author "Dybvig, R Kent")
(year 1981)
(institution "Computer Science Department, Indiana University")
(number 107)
(pdf-sha1 "7d3327f15e42292d10872acf3acd077ebb274a83")
(pdf "https://legacy.cs.indiana.edu/ftp/techreports/TR107.pdf")
(end-group)
(group "Distributed Garbage Collection")
;; TODO: Also University of Southampton. Technical Report M96/3. 1996.
(id moreau1996correctness)
(type inproceedings)
(title "Correctness of a distributed-memory model for Scheme")
(author "Moreau, Luc")
(booktitle "European Conference on Parallel Processing")
(pages "615--624")
(year 1996)
(month 8)
(organization "Springer")
(pdf-sha1 "6f2c71a2614f7ba305812e3194e2806dd7175197")
(pdf "https://eprints.soton.ac.uk/252769/1/europar96.pdf")
(ps "https://www.southampton.ac.uk/~lavm/papers/tech963.ps.gz")
(abstract "We propose a high-level approach to program distributed applications; it is based on the annotation `future` by which the programmer specifies which expressions may be evaluated remotely in parallel. We present the CEKDS-Machine, an abstract machine with a distributed memory, able to evaluate Scheme-like future-based programs. In this paper, we focus on the issue of task migration and prove that task migration is transparent to the user, i.e. task migration does not change the observable behaviour of programs.")
(id moreau1997distributed)
(type article)
(title "A Distributed Garbage Collector for NeXeme")
(author "Moreau, Luc")
(author "DeRoure, David")
(journal "Research Journal")
(year 1997)
(pdf-sha1 "3f5d076a24c6a92104f696573cc3448bb6e21f72")
(pdf "https://eprints.soton.ac.uk/409272/1/rj97.pdf")
(ps "http://www.ecs.soton.ac.uk/~lavm/papers/rj97.ps.gz")
(abstract "The remote service request, a form of remote procedure call, and the global pointer, a global naming mechanism, are two features at the heart of Nexus, a library to build distributed systems. NeXeme is an extension of Scheme that fully integrates both concepts in a mostly-functional framework. This short paper describes the distributed garbage collector that we implemented in NeXeme.")
(id moreau1998distributed)
(type inproceedings)
(title "A distributed garbage collector with diffusion tree reorganisation and mobile objects")
(author "Moreau, Luc")
(booktitle "Proceedings of the third ACM SIGPLAN international conference on Functional programming")
(pages "204--215")
(year 1998)
(month 9)
(pdf-sha1 "a33214d67ca81cea5ac9e5631d8235600867447f")
(pdf "https://eprints.soton.ac.uk/252754/1/icfp98.pdf")
(ps "http://www.ecs.soton.ac.uk/~lavm/papers/icfp98.ps.gz")
(abstract "We present a new distributed garbage collection algorithm that is able to reorganise diffusion trees and to support mobile objects. It has a modular design comprising three components: a reliable transport mechanism, a reference-counting based distributed garbage collector for non-mobile objects, and an extra layer that provides mobility. The algorithm is formalised by an abstract machine and is proved to be correct. The safety property ensures that an object may not be reclaimed as long as it is referred to locally or remotely. The liveness property guarantees that unreachable objects will eventually be reclaimed. The mobility property certifies that messages are always forwarded towards more recent mobile object positions.")
(id moreau1998hierarchical)
(type inproceedings)
(title "Hierarchical distributed reference counting")
(author "Moreau, Luc")
(booktitle "Proceedings of the First ACM SIGPLAN International Symposium on Memory Management (ISMM'98)")
(pages "57--67")
(year 1998)
(month 10)
(pdf-sha1 "c50668bef4302dd1df2af6c8ca2acbc1103668bc")
(pdf "https://eprints.soton.ac.uk/252752/1/ismm98.pdf")
(ps "http://www.ecs.soton.ac.uk/~lavm/papers/ismm98.ps.gz")
(abstract "Massively distributed computing is a challenging problem for garbage collection algorithm designers as it raises the issue of scalability. The high number of hosts involved in a computation can require large tables for reference listing, whereas the lack of information sharing between hosts in a same locality can entail redundant GC traffic. In this paper, we argue that a conceptual hierarchical organisation of massive distributed computations can solve this problem. By conceptual hierarchical organisation, we mean that processors are still able to communicate in a peer to peer manner using their usual communication mechanism, but GC messages will be routed as if processors were organised in hierarchy. We present an extension of a distributed reference counting algorithm that uses such a hierarchical organisation. It allows us to bound table sizes by the number of hosts in a domain, and it allows us to share GC information between hosts in a same locality in order to reduce cross-network GC traffic.")
(end-group)
(group "Other Topics in Distributed Compututing")
;; TODO: Also appeared in 2009 Workshop on Scheme and Functional Programming
(id cowley2009distributed)
(type article)
(title "Distributed Software Transactional Memory")
(author "Cowley, Anthony")
(author "Taylor, CJ")
(journal "Technical Report CPSLO-CSC-09-03")
(pages "116")
(year 2009)
(scheme-id plt-scheme)
(pdf-sha1 "6b32dd7960d6645bd854b117b4eeacc916e9e7e4")
(pdf "https://www.researchgate.net/profile/Eli_Barzilay/publication/252633372_Keyword_and_Optional_Arguments_in_PLT_Scheme/links/53fa47cd0cf20a45496fcd8b.pdf#page=116")
(abstract "This report describes an implementation of a distributed software transactional memory (DSTM) system in PLT Scheme. The system is built using PLT Scheme's Unit construct to encapsulate the various concerns of the system, and allow for multiple communication layer backends. The front-end API exposes true parallel processing to PLT Scheme programmers, as well as cluster-based computing using a shared namespace for transactional variables. The ramifications of the availability of such a system are considered in the novel context of highly dynamic robot swarm programming scenarios. In robotics programming scenarios, difficulty with expressing complex distributed computing patterns often supersedes raw performance in importance. In fact, for many applications the data to be shared among networked peers is relatively small in size, but the manner in which data sharing is expressed leads to tremendous inefficiencies both at development time and runtime. In an effort to maintain focus on behavior specification, we reduce the emphasis on messaging protocols typically found in distributed robotics software, while providing even greater flexibility in terms of how data is mixed and matched as it moves over the network.")
;; TODO: Also appeared in 2009 Workshop on Scheme and Functional Programming
(id kimball2007software)
(type inproceedings)
(title "Software transactions meet first-class continuations")
(author "Kimball, Aaron")
(author "Grossman, Dan")
(booktitle "8th Annual Workshop on Scheme and Functional Programming")
(year 2007)
(organization "Citeseer")
(pdf-sha1 "62f7ac6a34a7a8e3565134b2806ff29437efbfed")
(pdf "http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.187.7214&rep=rep1&type=pdf")
(abstract "Software transactions are a promising technology that make writing correct and efficient shared-memory multithreaded programs easier, but adding transactions to programming languages requires defining and implementing how they interact with existing language features. In this work, we consider how transactions interact with first-class continuations. We demonstrate that different idiomatic uses of continuations require different transactional semantics, so a language supporting transactions and call-with-current-continuation should provide programmers with a way to control these semantics. We present a design meeting this need, addressing both escaping from and reentering the dynamic extent of a transaction. We have implemented our design by modifying Scheme48. We present the most interesting details of the implementation and its performance on some small benchmarks.")
(id epardaud2004mobile)
(type article)
(title "Mobile reactive programming in ULM")
(author "Epardaud, Stéphane")
(journal "on Scheme and Functional Programming")
(pages "87")
(year 2004)
;; SHA of full TR 600 PDF:
(pdf-sha1 "f16cb1dad30acb26ea461c51f37384e0b540a559")
(pdf "ftp://html.soic.indiana.edu/pub/techreports/TR600.pdf#page=91")
(abstract "We present the embedding of ULM in Scheme and an implementation of a compiler and virtual machine for it. ULM is a core programming model that allows multi-threaded and distributed programming via strong mobility with a deterministic semantics. We present the multi-threading and distributed primitives of ULM step by step using examples. The introduction of mobility in a Scheme language raises questions about the semantics of variables with respect to migration. We expose the problems and offer two solutions alongside ULM’s network references. We also present our implementation of the compiler, virtual machine and the concurrent threading library written in Scheme.")
(id wittenberger2002askemos)
(type article)
(title "ASKEMOS: A distributed settlement")
(author "Wittenberger, J")
(journal "Proceedings of SSGRR 2002, L'Aquila, Italy")
(year 2002)
(pdf-sha1 "d0de0394b13ab14f804d559d65fc5cb2f7e45075")
(pdf "https://pdfs.semanticscholar.org/d0de/0394b13ab14f804d559d65fc5cb2f7e45075.pdf")
(abstract "This paper presents Askemos, an autonomous, distributed operating system on top of peer to peer networks which significantly raises the level of abstraction in comparison with today’s operating systems. Askemos addresses safe, secure and correct (forge proof) information processing while securing intellectual property in an innovative way." "Askemos defines a virtual machine on document level, which is defined in terms of abstract trees and pure functional transformation of them, both described in XML." "This virtual machine has no physical representation at any single machine. Instead it works distributed among independent components which appear as if they observed it. To achieve that effect, the participating machines compute the process steps of the virtual machine independent and vote among each other about the correct result." "To prevent illegal attacks, there exists no concept of unique resources like superuser rights or unique name spaces.")
(id dionne1996taxonomy)
(type inproceedings)
(title "A Taxonomy of Distributed Debuggers Based on Execution Replay")
(author "Dionne, Carl")
(author "Feeley, Marc")
(author "Desbien, Jocelyn")
(booktitle "PDPTA")
(pages "203--214")
(year 1996)
(pdf-sha1 "9d04784c23cbdc81dbcc4aea89f640287c31ed95")
(pdf "https://www-labs.iro.umontreal.ca/~feeley/papers/DionneFeeleyDesbiensPDPTA96.pdf")
(abstract "This paper presents a taxonomy of parallel and distributed debuggers based on execution replay. Programming of distributed and parallel systems is a complex task. Amongst the many factors contributing to this complexity, the nondeterminacy of these systems is an important one. Execution replay is a technique developed to facilitate the debugging of nondeterministic programs. Execution replay has very broad applications and not every algorithm is applicable in every situation. This taxonomy provides a precise classification of replay debuggers using nine criteria. From this classification, it is easier to determine a debugger's scope of application, outline its strengths and weaknesses and compare it with others. This taxonomy is illustrated and validated using a collection of existing replay debuggers.")
(id feeley1995lazy)
(type inproceedings)
(title "Lazy remote procedure call and its implementation in a parallel variant of C")
(author "Feeley, Marc")
(booktitle "International Workshop on Parallel Symbolic Languages and Systems")
(pages "1--21")
(year 1995)
(organization "Springer")
(pdf-sha1 "c36ff924f7b84d108f94cd9c350e4538f3b837b3")
(ps "https://www.iro.umontreal.ca/~feeley/papers/pslsw95.ps.gz")
(pdf "https://www.iro.umontreal.ca/~feeley/papers/FeeleyPSLS95.pdf")
(pdf "http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.52.9655&rep=rep1&type=pdf")
(abstract "Lazy task creation (LTC) is an efficient approach for executing divide and conquer parallel programs that has been used in the implementation of Multilisp's future construct. Unfortunately it requires a specialized memory management scheme, in particular for stack frames, which makes it hard to use in the context of conventional languages. We have designed a variant of LTC which has a stack management discipline that is compatible with the semantics of conventional languages. This mechanism, which we call lazy remote procedure call, has been used to implement a parallel variant of C. A first prototype of our system has been ported to shared-memory multiprocessors and network of workstations. Experimental results on a Cray T3D multiprocessor show that good performance can be achieved on several symbolic programs.")
(id vitek1996security)
(type inproceedings)
(title "Security and communication in mobile object systems")
(author "Vitek, Jan")
(author "Serrano, Manuel")
(author "Thanos, Dimitri")
(booktitle "International Workshop on Mobile Object Systems")
(pages "177--194")
(year 1996)
(organization "Springer")
(pdf-sha1 "2600ea553c834857e51cd0f2fb219924a33306e9")
(pdf "https://www.researchgate.net/profile/Jan_Vitek/publication/2238775_Lecture_Notes_in_Computer_Science/links/00b7d51a922e575c1e000000.pdf")
(id sumii2000implementation)
(type inproceedings)
(title "An implementation of transparent migration on standard Scheme")
(author "Sumii, Eijiro")
(booktitle "Proceedings of the Workshop on Scheme and Functional Programming, Technical Report 00-368, Rice University")
(pages "61--64")
(year 2000)
(month 9)
(organization "Citeseer")
(pdf-sha1 "09da549b7f21f6f0c7342c14c6bff742ea9cf84b")
(pdf "http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.65.5055&rep=rep1&type=pdf")
(abstract "I present a handy (though somewhat restrictive) way to implement mobile computation à la Telescript on top of standard Scheme.")
(id moreau1997finiteness)
(type article)
(title "On the finiteness of resources in distributed computing")
(author "Moreau, Luc")
(author "Queinnec, Christian")
(year 1997)
(pdf-sha1 "013b60b7cf73b7b4d37f4bbb02231e27ff2b2cac")
(pdf "https://eprints.soton.ac.uk/252771/1/RR_3147.pdf")
(abstract "Millions of computers are now connected together by the Internet. At a fast pace, applications are taking profit of these new capabilities, and become parallel and distributed, e.g. applets on the WWW or agent technology. As we live in a world with finite resources, an important challenge is to be able to control computations in such an environment. For instance, a user might like to suspend a computation because another one seems to be more promising. In this paper, we present a paradigm that allows the programmer to monitor and control computations, whether parallel or distributed, by mastering their resource consumption.")
(id moreau1998distributed)
(type inproceedings)
(title "Distributed computations driven by resource consumption")
(author "Moreau, Luc")
(author "Queinnec, Christian")
(booktitle "Proceedings of the 1998 International Conference on Computer Languages (Cat. No. 98CB36225)")
(pages "68--77")
(year 1998)
(organization "IEEE")
(pdf-sha1 "5a8cbd06857e32d73a6d6059c9661336a56125c8")
(pdf "https://christian.queinnec.org/PDF/iccl98.pdf")
(pdf "https://eprints.soton.ac.uk/252757/1/iccl98.pdf")
(abstract "Millions of computers are now connected together by the Internet. At a fast pace, applications are taking advantage of these new capabilities, and are becoming parallel and distributed, e.g. applets on the WWW or agent technology. As we live in a world with finite resources, an important challenge is to be able to control computations in such an environment. For instance, a user might like to suspend a computation because another one seems to be more promising. In this paper, we present a paradigm that allows the programmer to monitor and control computations, whether parallel or distributed, by mastering their resource consumption. We describe an implementation on top of the thread library PPCR and the message-passing library Nexus.")
(id philbin1995virtual)
(type inproceedings)
(title "Virtual topologies: A new concurrency abstraction for high-level parallel languages")
(author "Philbin, James")
(author "Jagannathan, Suresh")
(author "Mirani, Rajiv")
(booktitle "International Workshop on Languages and Compilers for Parallel Computing")
(pages "450--464")
(year 1995)
(organization "Springer")
(pdf-sha1 "e004b9f91100809a3b1ee13985d2124ec131f798")
(pdf "http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.4.943&rep=rep1&type=pdf")
(ps "http://www.cs.purdue.edu/homes/suresh/papers/plc95.ps.gz")
(abstract "We present a new concurrency abstraction and implementation technique for high-level (symbolic) parallel languages that allows significant programmer control over load-balancing and mapping of fine-grained lightweight threads. Central to our proposal is the notion of a virtual topology. A virtual topology defines a relation over a collection of virtual processors, and a mapping of those processors to a set of physical processors; processor topologies configured as trees, graphs, butterflies, and meshes are some well-known examples. A virtual topology need not have any correlation with a physical one; it is intended to capture the interconnection structure best suited for a given algorithm. We consider a virtual processor to be an abstraction that defines scheduling, migration and load-balancing policies for the threads it executes. Thus, virtual topologies are intended to provide a simple, expressive and efficient high-level framework for defining complex thread/processor mappings that abstracts low-level details of a physical interconnection.")
(id jagannathan1994ts)
(type article)
(title "TS/Scheme: Distributed data structures in Lisp")
(author "Jagannathan, Suresh")
(journal "Lisp and Symbolic Computation")
(volume "7")
(number "4")
(pages "291--314")
(year 1994)
(publisher "Springer")
(pdf-sha1 "ed72a019c4661a732df42834f4b2c0dc341edc91")
(pdf "https://www.researchgate.net/profile/Suresh_Jagannathan/publication/226132148_TSScheme_Distributed_data_structures_in_Lisp/links/0deec533d6548cefaf000000.pdf")
(ps "https://www.cs.purdue.edu/homes/suresh/papers/lasc94-1.ps.gz")
(abstract "We describe a parallel object-oriented dialect of Scheme called TS/Scheme that provides a simple and expressive interface for building asynchronous parallel programs. The main component in TS/Scheme's coordination framework is an abstraction that serves the role of a distributed data structure. Distributed data structures are an extension of conventional data structures insofar as many tasks may simultaneously access and update their contents according to a well-defined serialization protocol. The semantics of these structures also specifies that consumers which attempt to access an as-of-yet undefined element are to block until a producer provides a value." "TS/Scheme permits the construction of two basic kinds of distributed data structures, those accessed by content, and those accessed by name. These structures can be further specialized and composed to yield a number of other synchronization abstractions. Our intention is to provide an efficient medium for expressing concurrency and synchronization that is amenable to modular programming, and which can be used to succinctly and efficiently describe a variety of diverse concurrency paradigms useful for parallel symbolic computing.")
(id jagannathan1994locality)
(type inproceedings)
(title "Locality abstractions for parallel and distributed computing")
(author "Jagannathan, Suresh")
(booktitle "International Workshop on Theory and Practice of Parallel Programming")
(pages "320--345")
(year 1994)
(organization "Springer")
(pdf-sha1 "c7c56b9cc8379ea4416a1a925c8cc5204af8e3c2")
(pdf "http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.2.9436&rep=rep1&type=pdf")
(ps "https://www.cs.purdue.edu/homes/suresh/papers/tppp94.ps.gz")
(abstract "Temporal and spatial locality are signi cant concerns in the design and implementation of any realistic parallel or distributed computing system. Temporal locality is concerned with relations among objects that share similar lifetimes and birth dates; spatial locality is concerned with relations among ob jects that share information. Exploiting temporal locality can lead to improved memory behavior; exploiting spatial locality can lead to improved communication behavior. Linguistic, compiler, and runtime support for locality issues is especially important for unstructured symbolic computations in which lifetimes and sharing properties of ob jects are not readily apparent. Language abstractions for spatial and temporal locality include mechanisms for grouping related threads of control, allowing programs exibility to map computations onto virtual processors, reusing dynamic contexts efficiently, and permitting asynchronous garbage collection across multiple processors. These abstractions give users and implementations a large degree of mobility to exploit inherent locality properties found within many dynamic parallel applications. We have investigated a number of these abstractions within a high-level language framework and within compilers targeted for such a framework. In this paper, we discuss several of these abstractions and justify their importance")
(id jagannathan1991expressing)
(type article)
(title "Expressing Fine-Grained Parallelism Using Distributed Data Structures")
(author "Jagannathan, Suresh")
(journal "LeM91")
(pages "83--100")
(year 1991)
(publisher "Citeseer")
(pdf-sha1 "8b8ad058afbdaa512b36595a4fd41ce1e70033ed")
(pdf "http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.38.6916&rep=rep1&type=pdf")
(ps "https://www.cs.purdue.edu/homes/suresh/papers/hlpl91.ps.gz")
(abstract "Despite the fact that distributed data structures have long been advocated as a powerful tool for specifying communication and synchronization constraints in explicitly parallel languages, their utility in expressing ne-grained parallelism has thus far been limited. In this paper, we consider semantic analysis techniques and runtime support mechanisms that can be used to make distributed data structures an efficient device in this regard. We consider a compiler/runtime system for a higher-order expression-based parallel language supporting distributed data structures that relies on (1) a type inference system to answer questions regarding how shared distributed ob jects should be represented and partitioned, and (2) a high-level runtime kernel to e ectively manage and schedule dynamically instantiated lightweight threads of control. We argue that a tightly integrated system of this kind can be used to efficiently implement a variety of ne-grained parallel applications.")
(id jagannathan1991customization)
(type inproceedings)
(title "Customization of first-class tuple-spaces in a higher-order language")
(author "Jagannathan, Suresh")
(booktitle "Parle'91 Parallel Architectures and Languages Europe")
(pages "676--698")
(year 1991)
(organization "Springer")
(pdf-sha1 "887d517ee7c089a581adcb509e62eb1bcbc3902c")
(pdf "https://www.researchgate.net/profile/Suresh_Jagannathan/publication/2514347_Customization_of_First-Class_Tuple-Spaces_in_a_Higher-Order_Language/links/544e33130cf29473161a41b0/Customization-of-First-Class-Tuple-Spaces-in-a-Higher-Order-Language.pdf")
(abstract "A distributed data structure is an object which permits many producers to augment or modify its contents, and many consumers simultaneously to access its component elements. Synchronization is implicit in data structure access: a process that requests an element which has not yet been generated blocks until a producer creates it." "In this paper, we describe a parallel programming language (called T S) whose fundamental communication device is a significant generalization of the tuple-space distributed data structure found in the Linda coordination language. Our sequential base language is a dialect of Scheme." "Beyond the fact that T S is derived by incorporating a tuple-space coordination language into a higher-order computation language (i.e., Scheme), T S differs from other tuple-space languages in two important ways:" "* Tuple-spaces are first-class objects. They may be dynamically created, bound to names, passed as arguments to (or returned as results from) functions, and built into other data structures or tuples." "* The behavior of tuple-spaces may be customized. A tuple-space is manipulated via a policy closure that specifies its operational characteristics. The representation of policy closures take significant advantage of Scheme's support for higher-order functions; there is no fundamental extension to Scheme needed in order to support them." "We argue that rst-class customizable tuple-spaces provide an expressive and exible medium for building parallel programs in higher-order languages.")
(id jagannathan1991optimizing)
(type article)
(title "Optimizing Analysis for First-Class Tuple-Spaces")
(author "Jagannathan, Suresh")
(journal "Advances in Languages and Compilers for Parallel Computing")
(pages "44--70")
(year 1991)
(publisher "Citeseer")
(pdf-sha1 "c4a90dd8fc002cc8d947683aee7f5c79a728719f")
(pdf "http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.39.7794&rep=rep1&type=pdf")
(ps "https://www.cs.purdue.edu/homes/suresh/papers/plc91.ps.gz")
(abstract "This paper considers the design and optimization of a simple asynchronous parallel language that uses first-class tuple-spaces as its main communication and process creation device. Our proposed kernel language differs from other tuple-space languages insofar tuple-spaces are treated as true first-class objects. Moreover, we develop a formal framework for constructing an optimizing preprocessor for such a language. The semantic analysis is based on an inference engine that statically computes the set of tuples (and their structural attributes) that can occupy any given tuple-space. The inference system is non-trivial insofar as it operates in the presence of higher-order functions and non-at data structures (e.g, lists). The result of the inference procedure can be used to customize the representation of tuple-space objects.")
(id queinnec1999marshaling)
(type inproceedings)
(title "Marshaling/demarshaling as a compilation/interpretation process")
(author "Queinnec, Christian")
(booktitle "Proceedings 13th International Parallel Processing Symposium and 10th Symposium on Parallel and Distributed Processing. IPPS/SPDP 1999")
(pages "616--621")
(year 1999)
(organization "IEEE")
(pdf-sha1 "4267e8a14fd2065c9d68c0aab92fd367cbd221a5")
(pdf-sha1 "9f80571cfe6bf44e964af2f319cb1df8b01bd3b5")
(pdf "https://christian.queinnec.org/PDF/marsh.pdf")
;; TODO: Appeared in NOTERE97 -- Colloque international sur les NOuvelles TEchnologies de la R Épartition.
(id queinnec1997serialisation)
(type inproceedings)
(title "Sérialisation-désérialisation en DMeroon")
(year 1997)
(month 11)
(pdf-sha1 "c7685ac9b1208d23e1651ced201cad8b9e281081")
(pdf "https://christian.queinnec.org/PDF/serdes.pdf")
(ps "https://pages.lip6.fr/Christian.Queinnec/Papers/serdes.ps.gz")
(id queinnec1994sharing)
(type inproceedings)
(title "Sharing mutable objects and controlling groups of tasks in a concurrent and distributed language")
(author "Queinnec, Christian")
(booktitle "International Workshop on Theory and Practice of Parallel Programming")
(pages "70--93")
(year 1994)
(organization "Springer")
(pdf-sha1 "2173b855b6dc9c24116c97d400d59a9f11397288")
(pdf-sha1 "f239b0e8703c7e68411d1ac94696720f499f0501")
(pdf "https://christian.queinnec.org/PDF/dissem.pdf")
(pdf "http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.42.5491&rep=rep1&type=pdf")
(abstract "This paper presents: (i) an operational semantics, based on a functional framework, for a concurrent and distributed extension of the Scheme programming language, (ii) a coherency protocol taking care of shared mutable objects, (iii) a new coherency protocol to imperatively control hierarchical groups of cooperating tasks. These two protocols do not require broadcast, nor FIFO communications, nor a centralized machine; they allow to manage an unbound number of shared mutable values and groups of tasks. This paper also advocates for the use of a functional continuationbased presentation for these protocols.")
(end-group)
(group "Extension of Scheme for Parallel and Concurrent Programming")
(id ciabrini2004debugging)
(type article)
(title "Debugging scheme fair threads")
(author "Ciabrini, Damien")
(journal "on Scheme and Functional Programming")
(pages "75")
(year 2004)
;; SHA of full TR 600 PDF:
(pdf-sha1 "f16cb1dad30acb26ea461c51f37384e0b540a559")
(pdf "ftp://html.soic.indiana.edu/pub/techreports/TR600.pdf#page=79")
(abstract "There are two main policies for scheduling thread-based concurrent programs: preemptive scheduling and cooperative scheduling. The former is known to be difficult to debug, because it is usually non-deterministic and can lead to data races or difficult thread synchronization. We believe the latter is a better model when it comes to debugging programs." "In this paper, we discuss the debugging of Scheme Fair Threads, that are based on cooperative scheduling and synchronous reactive programming. In this approach, thread communication and synchronization is achieved by means of special primitives called signals, which ease the debugging process. We present the tools we have implemented to deal with the main types of concurrent bugs that can arise in this special programming framework.")
(id tinker1988parallel)
(type inproceedings)
(title "Parallel execution of sequential Scheme with ParaTran")
(author "Tinker, Pete")
(author "Katz, Morry")
(booktitle "Proceedings of the 1988 ACM Conference on LISP and Functional Programming")
(pages "28--39")
(year 1988)
(pdf-sha1 "eb3c2a0700b647bfa6f2219625b4efcc4203d279")
(abstract "This paper describes a system called ParaTran for executing sequential Scheme in parallel. It supports arbitrary side effects without requiring user annotations. The ParaTran runtime system detects and corrects data dependency violations using an automatic history and rollback mechanism. ParaTran is first described by analogy with Time Warp, a system for distributed simulation; this description is followed by a discussion of ParaTran's implementation and presentation of preliminary results.")
(id halstead1985multilisp)
(type article)
(title "Multilisp: A language for concurrent symbolic computation")
(author "Halstead Jr, Robert H")
(journal "ACM Transactions on Programming Languages and Systems (TOPLAS)")
(volume "7")
(number "4")
(pages "501--538")
(year 1985)
(publisher "ACM New York, NY, USA")
(pdf-sha1 "b25836d60f8598f823dc245b65f5b8653dad81f6")
(pdf "http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.97.1841&rep=rep1&type=pdf")
(abstract "Multilisp is a version of the Lisp dialect Scheme extended with constructs for parallel execution. Like Scheme, Multilisp is oriented toward symbolic computation. Unlike some parallel programming languages, Multilisp incorporates constructs for causing side effects and for explicitly introducing parallelism. The potential complexity of dealing with side effects in a parallel context is mitigated by the nature of the parallelism constructs and by support for abstract data types: a recommended Multilisp programming style is presented which, if followed, should lead to highly parallel, easily understandable programs." "Multilisp is being implemented on the 32-processor Concert multiprocessor; however, it is ultimately intended for use on larger multiprocessors. The current implementation, called Concert Multilisp, is complete enough to run the Multilisp compiler itself and has been run on Concert prototypes including up to eight processors. Concert Multilisp uses novel techniques for task scheduling and garbage collection. The task scheduler helps control excessive resource utilization by means of an unfair scheduling policy; the garbage collector uses a multiprocessor algorithm based on the incremental garbage collector of Baker.")
(id kranz1989mul)
(type inproceedings)
(title "Mul-T: A high-performance parallel Lisp")
(author "Kranz, David A")
(author "Halstead Jr, Robert H")
(author "Mohr, Eric")
(booktitle "Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation")
(pages "81--90")
(year 1989)
(pdf-sha1 "f1f80191d7d88d3e2bb389a6b429ac14dafee547")
(pdf "https://people.csail.mit.edu/riastradh/t/halstead89mul-t.pdf")
(abstract "Mul-T is a parallel Lisp system, based on Multilisp's future construct, that has been developed to run on an Encore Multimax multiprocessor. Mul-T is an extended version of the Yale T system and uses the T system's ORBIT compiler to achieve \"production quality\" performance on stock hardware - about 100 times faster than Multilisp. Mul-T shows that futures can be implemented cheaply enough to be useful in a production-quality system. Mul-T is fully operational, including a user interface that supports managing groups of parallel tasks.")
(id mohr1990lazy)
(type inproceedings)
(title "Lazy task creation: A technique for increasing the granularity of parallel programs")
(author "Mohr, Eric")
(author "Kranz, David A")
(author "Halstead Jr, Robert H")
(booktitle "Proceedings of the 1990 ACM conference on LISP and functional programming")
(pages "185--197")
(year 1990)
(pdf-sha1 "9ba200f867c8cea7b77d5ae1681008d7e5c98ad1")
(pdf "https://people.csail.mit.edu/riastradh/t/halstead90lazy-task.pdf")
(abstract "Many parallel algorithms are naturally expressed at a fine level of granularity, often finer than a MIMD parallel system can exploit efficiently. Most builders of parallel systems have looked to either the programmer or a parallelizing compiler to increase the granularity of such algorithms. In this paper we explore a third approach to the granularity problem by analyzing two strategies for combining parallel tasks dynamically at run-time. We reject the simpler load-based inlining method, where tasks are combined based on dynamic load level, in favor of the safer and more robust lazy task creation method, where tasks are created only retroactively as processing resources become available." "These strategies grew out of work on Mul-T, an efficient parallel implementation of Scheme, but could be used with other applicative languages as well. We describe our Mul-T implementations of lazy task creation for two contrasting machines, and present performance statistics which show the method's effectiveness. Lazy task creation allows efficient execution of naturally expressed algorithms of a substantially finer grain than possible with previous parallel Lisp systems.")
(id halstead1984implementation)
(type inproceedings)
(title "Implementation of Multilisp: Lisp on a multiprocessor")
(author "Halstead Jr, Robert H")
(booktitle "Proceedings of the 1984 ACM Symposium on LISP and functional programming")
(pages "9--17")
(year 1984)
(abstract "Multilisp is an extension of Lisp (more specifically, of the Lisp dialect Scheme) with additional operators and additional semantics to deal with parallel execution. It is being implemented on the 32-processor Concert multiprocessor. The current implementation is complete enough to run the Multilisp compiler itself, and has been run on Concert prototypes including up to four processors. Novel techniques are used for task scheduling and garbage collection. The task scheduler helps control excessive resource utilization by means of an unfair scheduling policy: the garbage collector uses a multiprocessor algorithm modeled after the incremental garbage collector of Baker. A companion paper discusses language design issues relating to Multilisp.")
(id halstead1985exception)
(type inproceedings)
(title "Exception Handling in Multilisp.")
(author "Halstead Jr, Robert H")
(author "Loaiza, Juan R")
(booktitle "ICPP")
(pages "822--830")
(year 1985)
(month 8)
(id halstead1987overview)
(type article)
(title "Overview of concert multilisp: a multiprocessor symbolic computing system")
(author "Halstead Jr, Robert H")
(journal "ACM SIGARCH Computer Architecture News")
(volume "15")
(number "1")
(pages "5--14")
(year 1987)
(publisher "ACM New York, NY, USA")
(pdf-sha1 "f724c474b070167da2a8bf299f3428c04968c2f1")
(abstract "Multilisp is a parallel programming language derived from the Scheme dialect of Lisp by addition of the future construct. Multilisp has been implemented on Concert, a shared-memory muitiprocessor that uses a novel RingBus interconnection. Concert currently has 28 MC68000 processors, with a design goal of 32 processors. Several application programs have been developed and measured using Concert Multilisp. Experience with these programs has contributed to tuning the Multilisp language design and will ultimately contribute to the design of a parallel architecture streamlined for high performance on Multilisp programs.")
;; MIT Technical Report MIT/LCS/TR-402
(id miller1987multischeme)
(type phdthesis)
(title "MultiScheme: a Parallel Processing System Based on MIT Scheme")
(author "Miller, James S")
(year 1987)
(month 9)
(publisher "Laboratory for Computer Science, Massachusetts Institute of Technology")
(id queinnec1991crystal)
(type inproceedings)
(title "Crystal Scheme: A Language for Massively Parallel Machines")
(author "Queinnec, Christian")
(booktitle "Second Symposium on High Performance Computing")
(pages "91--102")
(year 1991)
(organization "Citeseer")
(pdf-sha1 "13c26667e00d6b15d8b1bdafeec9dfe69fa78370")
(pdf "http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.40.6613&rep=rep1&type=pdf")
(abstract "Massively parallel computers are built out of thousands conventional but powerful processors with independent memories. Very simple topologies mainly based on physical neighbourhood link these processors. The paper discusses extensions to the Scheme language in order to master such machines. Allowing arguments of functions to be concurrently evaluated introduces parallelism. Migration across the different processors is achieved through a remote evaluation mechanism. First-class continuations offering some semantical problems with respect to concurrency, we propose a neat semantics for them and then show how to build, in the language itself, advanced concurrent constructs such as futures. Eventually we comment some simulations, with various topologies and migration policies, which enables to appreciate our previous linguistical choices and confirms the viability of the model. Massively parallel computers [Hewitt 80, Dally et al. 89, Germain et al. 90] are large ensembles comprising thousands of conventional but powerful processors equipped with independent memories. Their total throughput confers them tremendous computing potential but they still remain to be tamed. Such machines usually have a crystalline structure where a processor is only connected to its neighbours. No direct global addressing is possible within such a machine: informations can only ow from processor to processor on a neighbourhood basis. For the same reason, there is no shared memory. Various topologies exist and mainly hypertorus [Hewitt 80]. Only simple topologies achieve scalability i.e. the possibility to make a machine grow by simple addition of processors without logical nor physical discontinuity. To realize a chip which can be directly interconnected in three dimensions seems to be now attainable [B'echennec89] and confers much value to the whole approach We follow two ideas, similar to these expressed by [Chien & Dally 89]. First, programming should be relatively easy i.e. the mental model of the computation on so many processors with so many processes must be very simple to be still understandable; second, the language must allow to express sufficient concurrency to utilize the machine. Similarly to Halstead [Halstead 85], we choose to stick to an already familiar algorithmic language: Scheme [Rees & Clinger 86]. We only slightly modify or extend it with the needed capabilities. This approach growing from a small, powerful and semantically clean basis is our preferred way to easily experiment new features. We also try, following the Scheme philosophy, to introduce the minimal capabilities to satisfy our goals. The modified semantics of Scheme allows to concurrently evaluate the terms composing functional applications. This induces programming style changes as well as a modification of the meaning of continuations. Since concurrency is only introduced on a local basis, a remote evaluation mechanism [Stamos & Gifford 90] makes computations ow over the whole machine. Computations migrate but objects still reside on their birth site. We retain the full capabilities of Scheme and, in particular, do not forbid side-effects nor first-class continuation. We thus stick to a very simple, even na've, model: it is our aim to demonstrate that this model is viable through a series of simulations with varying topologies and migration strategies. The paper is organized in two main parts. The first part (section 1) describe the linguistical side and presents the semantics of our modifications to Scheme. The second part collects and comments results of simulations made on machines presented in section 2. We prove the viability of the previous linguistical choices in section 3. Future (section 4) and related (section 5) works conclude the paper.")
(id queinnec1990polyscheme)
(type inproceedings)
(title "PolyScheme: A Semantics for a Concurrent Scheme")
(author "Queinnec, Christian")
(booktitle "High Performance and Parallel Computing in Lisp Workshop, Twickenham, England")
(year 1990)
(pdf-sha1 "0098452bcc26919460a8a33baf36e7844e784989")
(pdf "https://pdfs.semanticscholar.org/0098/452bcc26919460a8a33baf36e7844e784989.pdf")
(abstract "The Scheme language does not fully specify the semantics of combination: the evaluation order of the terms composing a combination is left indeterminate. We investigate in this paper a different semantics for Scheme where terms of combinations are evaluated concurrently. The resulting semantics models a language with concurrent threads sharing a common workspace. The semantics is given in terms of denotational semantics and uses resumptions as well as a choice operator: oneof which mimics a scheduler. An alternate definition for this operator lets appear the classical powerdomains. The main interest of this operator is to offer a formalization that can be read with an operational point of view while keeping a firm theoretical base." "Scheme also offers first class continuations with indefinite extent; we examine some semantics for continuations with respect to concurrency. Each of these semantics is a natural extension of the sequential case of regular Scheme. Still they strongly differ in their observed behaviours." "The resulting language, named PolyScheme, offers much of the features of current concurrent Lisp (or Scheme) dialects thanks to the sole extension of its combination semantics and without any explicit specialized construct dealing with concurrency.")
(id philbin1992overview)
(type inproceedings)
(title "An overview of the STING operating system")
(author "Philbin, James")
(booktitle "Proceedings of the. th NEC Software Conference")
(year 1992)
(pdf-sha1 "35c40fd88bfa618a5754995fc0078ec7d3b17bc5")
(pdf "https://www.researchgate.net/profile/James_Philbin/publication/2547918_An_Overview_of_the_STING_Operating_System/links/0deec52d302c770f03000000/An-Overview-of-the-STING-Operating-System.pdf")
(abstract "Sting is an operating system designed to serve as a highly efficient substrate for modern programming languages. Sting includes support for: various models of parallelism and synchronization; lazy, normal, and eager evaluation; automatic storage management; and topology mapping. Sting is different from other operating systems in several respects. The basic concurrency objects in Sting, virtual processors and lightweight threads, are first class. They provide the user with a level of expressiveness and control unavailable in other operating systems. Thread scheduling and migration are completely customizable. This allows Sting to be used in real-time, interactive, and batch oriented operating environments. Sting also provides a novel system of storage management, including a new kind of parallel garbage collection. Finally, Sting introduces several new optimizations which significantly improve locality of reference and reduce storage requirements, thereby increasing efficiency.")
(id philbin1992customizable)
(type inproceedings)
(title "Customizable policy management in the STING operating system")
(author "Philbin, James")
(booktitle "US/Japan Workshop on Parallel Symbolic Computing")
(pages "380--401")
(year 1992)
(organization "Springer")
(abstract "Sting is an operating system designed to serve as a highly efficient substrate for modern programming languages. It is designed to run on both parallel and distributed systems. This paper describes one of the important contributions of Sting - customizable policy management at both the kernel and user level of the operating system. Two well defined interfaces separate control issues from policy issues. These interfaces allow different, customized policy management modules to be implemented without changing the rest of the system. Customizable policy management makes Sting suitable for many different operating environments including real time, interactive, and computationally intensive. It also allows the user to choose or implement a policy management strategy that is best suited to a particular program.")
(id philbin1993sting)
(type phdthesis)
(title "STING: An Operating System for Modern Languages")
(author "Philbin, James")
(school "Yale University")
(year 1993)
(month 5)
(id jagannathan1992customizable)
(type article)
(title "A customizable substrate for concurrent languages")
(author "Jagannathan, Suresh")
(author "Philbin, Jim")
(journal "ACM Sigplan Notices")
(volume "27")
(number "7")
(pages "55--81")
(year 1992)
(publisher "ACM New York, NY, USA")
(pdf-sha1 "e247d91f5bf5780beaa56718cdbb19e8c417e5c7")
(pdf "https://www.researchgate.net/profile/Suresh_Jagannathan/publication/2819936_A_Customizable_Substrate_for_Concurrent_Languages/links/544008b60cf21227a11ba1af.pdf")
(ps "https://www.cs.purdue.edu/homes/suresh/papers/pldi92.ps.gz")
(abstract "We describe an approach to implementing a wide-range of concurrency paradigms in high-level (symbolic) programming languages. The focus of our discussion is sting, a dialect of Scheme, that supports lightweight threads of control and virtual processors as first-class objects. Given the significant degree to which the behavior of these objects may be customized, we can easily express a variety of concurrency paradigms and linguistic structures within a common framework without loss of efficiency. Unlike parallel systems that rely on operating system services for managing concurrency, sting implements concurrency management entirely in terms of Scheme objects and procedures. It, therefore, permits users to optimize the runtime behavior of their applications without requiring knowledge of the underlying runtime system. This paper concentrates on (a) the implications of the design for building asynchronous concurrency structures, (b) organizing large-scale concurrent computations, and (c) implementing robust programming environments for symbolic computing.")
(id jagannathan1992foundation)
(type inproceedings)
(title "A foundation for an efficient multi-threaded scheme system")
(author "Jagannathan, Suresh")
(author "Philbin, Jim")
(booktitle "Proceedings of the 1992 ACM conference on LISP and functional programming")
(pages "345--357")
(year 1992)
(pdf-sha1 "d804c21a26e8c2dde3ec4fc03afb3c6a136d6eb2")
(pdf "https://s3.amazonaws.com/academia.edu.documents/49363240/A_Foundation_for_an_Efficient_Multi-Thre20161004-24432-gqukhr.pdf?response-content-disposition=inline%3B%20filename%3DA_Foundation_for_an_Efficient_Multi-Thre.pdf&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWOWYYGZ2Y53UL3A%2F20200304%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200304T093547Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=3c8c58c23b782fb9ded49f55bbcd41bbc325f7f576dd1084b9b57b8d12411961")
(abstract "We have built a parallel dialect of Scheme called STING that differs from its contemporaries in a number of important respects. STING is intended to be used as an operating system substrate for modern parallel programming languages." "The basic concurrency management objects in STING are first-class lightweight threads of control and virtual processors (VPS). Unlike high-level concurrency structures, STING threads and VPS are not encumbered by complex synchronization protocols. Threads and VPS are manip ulated in the same way es any other Scheme structure." "STING separates thread policy decisions from thread implementation ones. Implementations of different parallel languages built on top of STING can define their own scheduling and migration policies without requiring modification to the runtime system or the provided interface. Process migration and scheduling can be customized by applications on a per-VP basis." "The semantics and implementation of threads minimizes the cost of thread creation, and puts a premium on storage locality. The storage management policies in STING lead to better cache and page utilization, and allows users to experiment with a variety of different execution regimes - from fully delayed to completely eager evaluation.")
(id moreau1995semantics)
(type article)
(title "The semantics of pcall and fork in the presence of first-class continuations and side-effects")
(author "Moreau, Luc")
(author "Ribbens, Daniel")
(year 1995)
(publisher "Springer-Verlag")
(pdf-sha1 "a4e1e0605a9184d1cc1b448247116b1298d5a17f")
(pdf "https://eprints.soton.ac.uk/252768/1/The_Semantics_of_pcall_and_fork_in_the_presence_of_firs-class_continuations_and_side-effects.pdf")
(abstract "We present the semantics of the annotations pcall and fork for parallel evaluation of Scheme. Annotated programs are proved to be behaviourly indistinguishable from their non-annotated counterparts even in the presence of first-class continuations and side-effects. The semantics takes the form of an abstract machine, which can be regarded as a guideline for an implementation.")
;; Also Workshop on Object-Based Parallel and Distributed Computing (OBPDC'96)
(id taura1995schematic)
(type inproceedings)
(title "Schematic: A concurrent object-oriented extension to scheme")
(author "Taura, Kenjiro")
(author "Yonezawa, Akinori")
(booktitle "France-Japan Workshop on Object-Based Parallel and Distributed Computation")
(pages "59--82")
(year 1995)
(organization "Springer")
(pdf-sha1 "93e940d35cbb7c2c7cd2f57c39f2674021a30e84")
(pdf "https://www.researchgate.net/profile/Akinori_Yonezawa2/publication/2486690_Schematic_A_Concurrent_Object-Oriented_Extension_to_Scheme/links/53eb07490cf28f342f44f150.pdf")
(abstract "A concurrent object-oriented extension to the programming language Scheme, called Schematic, is described. Schematic supports familiar constructs often used in typical parallel programs (future and higher-level macros such as plet and pbegin), which are actually defined atop a very small number of fundamental primitives. In this way, Schematic achieves both the convenience for typical concurrent programming and simplicity and exibility of the language kernel. Schematic also supports concurrent objects which exhibit more natural and intuitive behavior than the \"bare\" (unprotected) shared memory, and permit more concurrency than the traditional Actor model. Schematic will be useful for intensive parallel applications on parallel machines or networks of workstations, concurrent GUI programming, distributed programming over network, and even concurrent shell programming.")
(id masuhara1999architecture)
(type phdthesis)
(title "Architecture Design and Compilation Techniques Using Partial Evaluation in Reflective Concurrent Object-Oriented Languages")
(author "Masuhara, Hidehiko")
(year 1999)
(school "PhD thesis, Department of Information Science, Faculty of Science~...")
(pdf-sha1 "3eafada8bf250911675dbbbd41b7aebff96aee82")
(pdf "https://pdfs.semanticscholar.org/3eaf/ada8bf250911675dbbbd41b7aebff96aee82.pdf")
(abstract "Parallel and distributed programs often have hardware/problem specific optimizations for improving quality of the program such as efficiency and robustness. Those optimizations, unfortunately, degrade portability and re-usability as they are intertwined with the original algorithm description. Reective languages, which provide the application programmer extensible and abstract implementation of the language, can describe such optimizations as extensions to the language. The separation of optimization descriptions gains portability and re-usability of both application programs and optimizations. However, the interpretive execution model of reective languages imposes a large amount of performance overhead, which sometimes outweighs bene- fits of optimizations. Previous reective languages prohibit some of operations being modified via reection, so as to reduce the amount of interpretation overhead. The imperfection of this approach is that it still leaves a considerable amount of overhead, and it yields less exible, unclear reective architecture." "This dissertation investigates design and compilation framework of metainterpreters and meta-objects in an object-oriented concurrent language ABCL/R3. By using partial evaluation to compile reective programs, ABCL/R3 achieves exible and lucid reective architecture and efficient execution at the same time. We design full-edged meta-interpreters by examining several concurrent programming examples. A newly proposed delegation mechanism enables to define modular and scope controlled extensions to meta-interpreters. We design meta-objects by exploiting the notion of reader/writer methods in a concurrent object-oriented language Schematic, so that they can be effectively partially evaluated. The compilation frameworks of meta-interpreters and meta-objects basically translate concurrent object definitions into a sequential program, then apply partial evaluator for a sequential language, and generates a program in a (non-reective) concurrent object-oriented language, in which base-level and meta-level objects are collapsed to single level objects. The efficiency of generated programs is demonstrated by several benchmark programs, in which our compiler exhibits performance close to non-reective languages.")
(id masuhara1998design)
(type inproceedings)
(title "Design and partial evaluation of meta-objects for a concurrent reflective language")
(author "Masuhara, Hidehiko")
(author "Yonezawa, Akinori")
(booktitle "European Conference on Object-Oriented Programming")
(pages "418--439")
(year 1998)
(organization "Springer")
(pdf-sha1 "cf782be440f23d1994781055f9beaf8d8569c26c")
(pdf "https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.11.4300&rep=rep1&type=pdf")
(abstract "Customizable meta-objects are a powerful abstraction for extending language features and implementation mechanisms, but interpretive execution suffers from severe performance penalty. Some of this penalty can be reduced by applying partial evaluation to meta-interpreters, but partial evaluation of meta-objects in existing concurrent object-oriented languages is ineffective. This paper proposes a new meta-object design for our reflective language ABCL/R3. It yields meta-objects that can be optimized effectively using partial evaluation. The crux of the design is the separation of state-related operations from other operations, and this separation is accomplished by using reader/writer methods in our concurrent object-oriented language called Schematic. Our benchmark trials show that non-trivial programs with partially evaluated meta-objects run more than six times faster than ones that are interpreted by meta-objects. In addition, a partially evaluated program that uses a customized meta-object runs as efficiently as a program that is manually rewritten so as to have the same functionality without using meta-objects.")
(end-group)
(group "Threading and Parallel Programming with Continuations")
(id serrano2002fairthreads)
(type inproceedings)
(title "Scheme FairThreads")
(author "Serrano, Manuel")
(author "Boussinot, Frédéric")
(author "Serpette, Bernard")
(booktitle "2th International Lisp Conference")
(year 2002)
(month 10)
(id serrano2004fairthreads)
(type inproceedings)
(title "Scheme fair threads")
(author "Serrano, Manuel")
(author "Boussinot, Frédéric")
(author "Serpette, Bernard")
(booktitle "Proceedings of the 6th ACM SIGPLAN international conference on Principles and practice of declarative programming")
(pages "203--214")
(year 2004)
(pdf-sha1 "315a9c0c28ac00d3595db73e884d5453eea52fd7")
(html "https://www-sop.inria.fr/members/Manuel.Serrano/publi/sbs-ppdp04.html")
(id gasbichler2002processes)
(type article)
(title "Processes vs. user-level threads in Scsh")
(author "Gasbichler, Martin")
(author "Sperber, Michael")
(journal "on Scheme and Functional Programming")
(pages "49")
(year 2002)
;; SHA of full proceedings PDF:
(pdf-sha1 "4f6de2829de5c80d27f4ceec799ce945c069f279")
(pdf "http://www.ccs.neu.edu/home/shivers/papers/scheme02/tr.pdf#page=53")
(abstract "The new version of scsh enables concurrent system programming with portable user-level threads. In scsh, threads behave like processes in many ways. Each thread receives its own set of process resources. Like Unix processes, forked threads can inherit resources from the parent thread. To store these resources scsh uses preserved thread fluids, a special kind of fluid variables. The paper gives a detailed description of an efficient implementation for thread-local process resources. Scsh also provides an interface to the fork system calls which avoids common pitfalls which arise with a userlevel thread system. Scsh contains a binding for fork that forks \"only the current thread.\"")
(id haynes1987abstracting)
(type article)
(title "Abstracting timed preemption with engines")
(author "Haynes, Christopher T.")
(author "Friedman, Daniel P.")
(journal "Comput. Lang.")
(volume "12")
(number "2")
(pages "109--121")
(year 1987)
(pdf-sha1 "bb29a0fbf442b1a3c6b21461111d8e6b8ef65ea8")
(pdf "ftp://jcmc.indiana.edu/pub/techreports/TR178.pdf")
(abstract "The need for a programming language abstraction for timed preemption is argued, and several possibilities for such an abstraction are presented. One, called engines, is adopted. Engines are an abstraction of bounded computation, not a process abstraction in the usual sense. However, in conjuction with first class continuations, engines allow a language to be extended with time-sharing implementations for a variety of process abstraction facilities. We present a direct implementation of hiaton streams. Engine nesting refers to the initiation of an engine computation by an already running engine. We consider the need for engine nesting and show how it may be accomplished in a manner that charges a parent engine for the computation of its offspring. We conclude by discussing the importance of simple and general abstractions such as engines.")
(id haynes1984engines)
(type inproceedings)
(title "Engines build process abstractions")
(author "Haynes, Christopher T")
(author "Friedman, Daniel P")
(booktitle "Proceedings of the 1984 ACM Symposium on LISP and functional programming")
(pages "18--24")
(year 1984)
(pdf-sha1 "8cf328f53f0857cee06b986f5ffb75c5d4b49643")
(pdf "ftp://ftp.extreme.indiana.edu/pub/techreports/TR159.pdf")
(abstract "Engines are a new programming language abstraction for timed preemption. In conjunction with first class continuations, engines allow the language to be extended with a time sharing implementation of process abstraction facilities. To illustrate engine programming techniques, we implement a round-robin process scheduler. The importance of simple but powerful primitives such as engines is discussed.")
(id hieb1990continuations)
(type inproceedings)
(title "Continuations and concurrency")
(author "Hieb, Robert")
(author "Dybvig, R Kent")
(booktitle "Proceedings of the second ACM SIGPLAN symposium on Principles & practice of parallel programming")
(pages "128--136")
(year 1990)
(pdf-sha1 "07882d60790226b13250dab34e331ec74821c6c9")
(abstract "Continuations have proven to be useful for implementing a variety of control structures, including exception handling facilities and breadth-first searching algorithms. However, traditional continuations are not useful in the presence of concurrency, because the notion of the rest of the computation represented by a continuation does not in general make sense. This paper presents a new type of continuation, called a process continuation, that may be used to control tree-structured concurrency. Just as a traditional continuation represents the rest of a computation from a given point in the computation, a process continuation represents the rest of a subcomputation, or process, from a given point in the subcomputation. Process continuations allow nonlocal exits to arbitrary points in the process tree and allow the capture of a subtree of a computation as a composable continuation for later use. Even in the absence of multiple processes, the precise control achievable with process continuations makes them more useful than traditional continuations.")
(id wand1980continuation)
(type inproceedings)
(title "Continuation-based multiprocessing")
(author "Wand, Mitchell")
(booktitle "Proceedings of the 1980 ACM conference on LISP and functional programming")
(pages "19--28")
(year 1980)
(pdf-sha1 "281e09eaf471f73988021f199e1e72cfebf7461c")
(pdf "ftp://jcmc.indiana.edu/pub/techreports/TR90.pdf")
(abstract "ABSTRACT: Any multiprocessing facility must include three features: elementary exclusion, data protection, and process saving. While elementary exclusion must rest on some hardware facility (e.g. a test-and-set instruction), the other two requirements are fulfilled by features already present in applicative languages. Data protection may be obtained through the use of procedures (closures or funargs), and process saving may be obtained through the use of the CATCH operator. The use of CATCH, in particular, allows an elegant treatment of process saving which is much more tractable than the ones found in the operating systems literature." "We demonstrate these techniques by writing the kernel and some modules for a multiprocessing system. The kernel is very small. Many functions which one would normally expect to find inside the kernel are completely decentralized. We consider the implementation of other schedulers, interrupts, and the implications of these ideas for language design.")
;; Mitchell Wand. "Continuation-Based Multiprocessing Revisited". _Higher-Order and Symbolic Computation_. 12(3). October 1999. Available online: [ps](ftp://ftp.ccs.neu.edu/pub/people/wand/papers/hosc-99-intro.ps).
;; Mitchell Wand. "Continuation-Based Multiprocessing". _Higher-Order and Symbolic Computation_. 12(3). October 1999. Available online: [ps](ftp://ftp.ccs.neu.edu/pub/people/wand/papers/hosc-99.ps).
(id hieb1994subcontinuations)
(type article)
(title "Subcontinuations")
(author "Hieb, Robert")
(author "Dybvig, R Kent")
(author "Anderson, Claude W")
(journal "Lisp and Symbolic Computation")
(volume "7")
(number "1")
(pages "83--109")
(year 1994)
(month 1)
(publisher "Springer")
(pdf-sha1 "8f0da1a917951fd389e7e4527aef1068f1fb0973")
(pdf "https://pdfs.semanticscholar.org/8f0d/a1a917951fd389e7e4527aef1068f1fb0973.pdf")
(ps "http://www.cs.indiana.edu/~dyb/papers/subcontinuations.ps.gz")
(abstract "Continuations have proven to be useful for implementing a variety of control structures, including exception handling facilities and breadth-first searching algorithms. However, traditional continuations are not useful in the presence of concurrency, because the notion of the rest of the computation represented by a continuation does not in general make sense. Traditional continuations can also be difficult to use in nonconcurrent settings, since their global nature is sometimes problematic. This article presents a new type of continuation, called a subcontinuation. Just as a traditional continuation represents the rest of a computation from a given point in the computation, a subcontinuation represents the rest of a subcomputation from a given point in the subcomputation. Subcontinuations may be used to control tree-structured concurrency by allowing nonlocal exits to arbitrary points in a process tree and allowing the capture of a subtree of a computation as a composable continuation for later use. In the absence of concurrency the localized control achievable with subcontinuations makes them more useful than traditional continuations.")
(id shivers1997continuations)
(type inproceedings)
(title "Continuations and threads: Expressing machine concurrency directly in advanced languages")
(author "Shivers, Olin")
(booktitle "Proceedings of the Second ACM SIGPLAN Workshop on Continuations")
(pages "2--1")
(year 1997)
(month 1)
(pdf-sha1 "410d403ae4757e062f992e4b32cda6245a1a4705")
(pdf "https://www.eecis.udel.edu/~cavazos/cisc879-spring2008/papers/cps-threads.pdf")
(abstract "It is well known [Wand] that concurrency can be expressed within languages that provide a continuation type. However, a number of misconceptions persist regarding the relationship between threads and continuations. I discuss the proper relationship between these two objects, and present a model for directly expressing concurrency using continuations. The model is designed to support systems programming, and has several novel features: it is synchronous, preemptable, and fully virtualisable, allowing schedulers to be written by unprivileged users that are indistinguishable from top-level schedulers that actually control access to the hardware resources.")
(id moreau1992programming)
(type article)
(title "Programming in a Parallel Functional Language with Continuations")
(author "Moreau, Luc")
(journal "Avanc ees Applicatives. Journ ees Francophones des Langages Applicatifs (JFLA'92)")
(volume "76")
(pages "77")
(year 1992)
(month 2)
(pdf-sha1 "ac27ce4bdb18db4c13d38bd3f4c2f4cf709e38b6")
(pdf "https://eprints.soton.ac.uk/252772/1/Programmer_dans_un_langage_fonctionnel_parallele_avec_continuations.pdf")
(abstract "Dans cet article, nous montrons que la méthodologie de program- mation fonctionnelle avec continuations peut étre appliquée pour réaliser des applications paralléles. Cette approche est rendue possible grace a des opérateurs pour le parallélisme qui sont transparents. La définition de ces opérateurs se base sur une notion de métacontinuation représentant un ordre d'évaluation séquentiel de gauche a droite. Une définition d'un langage fonctionnel avec opérateurs transparents pour le parallélisme est donnée sous forme d'une traduction vers un langage fonctionnel possédant 4 primitives pour le parallélisme du type CCS.")
(id moreau1992operational)
(type inproceedings)
(title "An operational semantics for a parallel functional language with continuations")
(author "Moreau, Luc")
(booktitle "International Conference on Parallel Architectures and Languages Europe")
(pages "413--430")
(year 1992)
(month 6)
(organization "Springer")
(pdf-sha1 "8f4f9c3efd019844b00286f3c0427a72ef60fb46")
(pdf "https://eprints.soton.ac.uk/252762/1/An_operational_semantics_for_a_parallel_language_with_continuations.pdf")
(abstract "Explicit parallelism can be introduced in Scheme by adding the constructs fork, pcall and future. Katz and Weise gave an implementation where those constructs are transparent even when first class continuations are used. In this paper, we formalise this work by giving an operational semantics for a functional language with first class continuations and transparent constructs for parallelism. We introduce a concept of higher order continuation that we call metacontinuation which preserves sequential properties of continuations in a parallel language.")
(id moreau1993sound)
(type inproceedings)
(title "Sound rules for parallel evaluation of a functional language callcc")
(author "Moreau, Luc")
(author "Ribbens, Daniel")
(booktitle "Proceedings of the conference on Functional programming languages and computer architecture")
(pages "125--135")
(year 1993)
(month 6)
(pdf-sha1 "571fc7595fdb74474825136b47f323afe66a84a7")
(pdf "https://eprints.soton.ac.uk/252763/1/Sound_rules_for_parallel_Evaluation_of_a_Functional_Language_with_callcc.pdf?keepThis=true")
(abstract "Observationally equivalent programs are programs which are indistinguishable in all contexts, as far as their termination property is concerned. In this paper, we present rules pre- serving observational equivalence, for the parallel evaluation of programs using call/cc. These rules allow the capture of continuations in any applicative context and they prevent from aborting the whole computation when a continuation is applied in the extent of the call/cc by which it was reified. As a consequence, these results prove that one can design a functional language with first-class continuations which has transparent constructs for parallelism.")
(id moreau1994pcks)
(type inproceedings)
(title "The PCKS-machine: An abstract machine for sound evaluation of parallel functional programs with first-class continuations")
(author "Moreau, Luc")
(booktitle "European Symposium on Programming")
(pages "424--438")
(year 1994)
(month 4)
(organization "Springer")
(pdf-sha1 "85524115a001b37c731d47e3c260160931f93101")
(pdf "https://link.springer.com/content/pdf/10.1007/3-540-57880-3_28.pdf")
(abstract "The PCKS-machine is an abstract machine that evaluates parallel functional programs with first-class continuations. Parallelism is introduced by the construct pcall, which provides a fork-and-join type of parallelism. To the best of our knowledge, the PCKS-machine is the first implementation of such a language that is proved to have a transparent construct for parallelism: every program using such a construct returns the same result as in the absence of this construct. This machine is also characterised by the non-speculative invocation of continuations whose interest is illustrated in an application.")
(id moreau1995sound)
(type phdthesis)
(title "Sound evaluation of parallel functional programs with first-class continuations")
(author "Moreau, Luc")
(year 1995)
(month 6)
(school "Université de Liège, Faculté des sciences appliquées")
(pdf-sha1 "ad93e180a337c9a89ebc27046eab984966f7d948")
(pdf "https://pdfs.semanticscholar.org/ad93/e180a337c9a89ebc27046eab984966f7d948.pdf")
(abstract "The interpreter continuation is the computation that remains to be performed after evaluating a given expression. Some programming languages provide the programmer with two facilities to act on the interpreter continuation: the capture and the invocation. The capture of a continuation consists in packaging up the current interpreter continuation as a rst-class object so that it can be manipulated like any other object. The invocation of a continuation discards the current interpreter continuation and resumes the computation with the invoked continuation." "The constructs fork and pcall explicitly indicate where parallel evaluations can proceed. These constructs are expected to be transparent: a program using such constructs is supposed to return the same result as in their absence. Traditionally, the semantics of continuations is formulated in a sequential framework; the addition of parallelism to a language with rst-class continuations requires to specify a new semantics for continuations. This is the issue addressed in our dissertation, and these are its ma jor contributions." "* We set up a semantics for rst-class continuations such that the meaning of a parallel program is the same as the sequential meaning of the program without the constructs for parallelism. This semantics is formalised in a reduction system that is an extension of the \x15;-calculus." "* The proposed semantics is proved to be sound with respect to the sequential semantics. The soundness criterion used in this proof is the notion of observational equivalence." "* We implement this semantics on an abstract machine that models a MIMD architecture with a shared memory, and we prove the correctness of this implementation.")
(id moreau1995parallel)
(type article)
(title "A Parallel Functional Language with First-Class Continuations: Programming Style and Semantics")
(author "Moreau, Luc")
(journal "Computers and artificial intelligence")
(volume "14")
(number "2")
(pages "173")
(year 1995)
(pdf-sha1 "54c7083047eadce6e5ad7a7d8432fa0ee3126a48")
(pdf "https://eprints.soton.ac.uk/252765/1/A_Parallel_Functional_Language_with_First-Class_Continuations.pdf")
(abstract "We present an operational semantics for a functional language with first-class continuations and transparent constructs for parallelism fork and pcall. The sequential semantics of programs with first-class continuations is preserved when parallel evaluation is allowed, by verifying whether some expressions have returned a value before applying a continuation. These expressions are the ones that are evaluated before this continuation is applied in a left-to-right sequential order. An implementation is proposed using a notion of higher-order continuation that we call mcetacontinuation. This semantics is costless when first-class continuations are not used, Several programs also illustrate the programming style that can be adopted in such a language.")
(id moreau1995non)
(type inproceedings)
(title "Non-speculative and upward invocation of continuations in a parallel language")
(author "Moreau, Luc")
(booktitle "Colloquium on Trees in Algebra and Programming")
(pages "726--740")
(year 1995)
(month 5)
(organization "Springer")
(pdf-sha1 "0c7f6805f4ea40a0794a1e3f20ccb1a7d2548f4c")
(pdf-sha1 "5009e982abb72e6742614a21cd6a0456c01bf18f")
(pdf "https://link.springer.com/content/pdf/10.1007/3-540-59293-8_231.pdf")
(pdf "https://eprints.soton.ac.uk/252767/1/Non-speculative_and_Upward_Invocation_of_Continuations_in_Parallel_Language.pdf")
(abstract "A method of preserving the sequential semantics in parallel programs with first-class continuations is to invoke continuations non-speculatively. This method, which prevents a continuation from being invoked as long as its invocation can infringe the sequential semantics, reduces parallelism by the severe conditions that it imposes~ especially on upward uses. In this paper, we present new conditions for invoking continuations in an upward way and both preserving the sequential semantics and providing parallelism. This new approach is formalised in the PCKS-machine, which is proved to be correct by showing that it has the same observational equivalence theory as the sequential semantics.")
(end-group)
(group "Futures and Multi-Lisp")
(id feeley1993efficient)
(type phdthesis)
(title "An efficient and general implementation of futures on large scale shared-memory multiprocessors")
(author "Feeley, Marc")
(year 1993)
(month 4)
(school "Brandeis University")
(pdf-sha1 "de02d52f3edcddfc257ec29d528de5c1fc7059ae")
(pdf "https://www.iro.umontreal.ca/~feeley/papers/FeeleyPhD.pdf")