Article View: comp.lang.misc
Article #3929Release of MeldC 2.0, A Reflective Object-Oriented Coordination Language.
From: James Lee
Date: Tue, 15 Dec 1992 15:46
Date: Tue, 15 Dec 1992 15:46
475 lines
20079 bytes
20079 bytes
MeldC 2.0: A Reflective
Object-Oriented Coordination Programming Language
We are pleased to inform you that MeldC 2.0 is available to
interested universities and our industrial sponsors. Enclosed is
an information sheet that details the current status of the MeldC
Project here at Columbia University, and a selected list of
related publications.
The release includes source and binary code for Sun4s running
SunOS version 4.1 and DecStations running Ultrix 4.2. It also
includes a user's manual, implementor's manuals for the MeldC
compiler and the MeldC runtime system, and numerous MeldC
examples.
The release is available free of charge via FTP. Please arrange
for an authorized official to sign and submit to us two (2)
copies of the attached license agreement. Once we have received
the signed license, we will provide you with the necessary
password to obtain the MeldC release. This will be expedited if
you include an email address with your license.
If you would prefer a Sun or DEC cartridge tape and hardcopy
manuals rather than FTP, you must include a check for $995.00 (US
dollars) to cover media, photocopying several hundred pages of
manuals, shipping and handling. Checks should be made payable to
Columbia University, and must be drawn on a US bank. Sorry, we
cannot accept purchase orders or checks drawn on a non-US bank.
Please use the address: ATTN: Prof. Gail E. Kaiser, Columbia
University, Department of Computer Science, 500 West 120th
Street, New York, NY 10027, United States. Any other name or
address will substantially delay receipt and processing.
We look forward to hearing from you.
Programming System Laboratory
Department of Computer Science
Columbia University
Email : MeldC@cs.columbia.edu
Gail E. Kaiser
Associate Professor
/******************************************************************************/
MeldC 2.0
A Reflective Object-Oriented Coordination Language
The MELD project has been one of the major foci of the Programming
Systems Laboratory at Columbia University since 1987. Our goal is to
develop a parallel and distributed object-oriented programming
language for large-scale applications. Starting in 1990, the MELD
language was completely redesigned and reimplemented from scratch to
produce MELDC, which is closer to C, has fewer but more sophisticated
``features'', and a cleaner architecture with many of the facilities
implemented in the MELDC language itself.
1. Concepts
The concept of ``coordination language'' was introduced by Carriero
and Gelernter (CACM, Apr89) to designate a class of programming
languages suitable for describing the behavior of open systems.
Ciancarini (ICCL, Mar90) suggests the following definition for open
systems:
An open system is a dynamic set of agents both cooperating
and conflicting for the use of a dynamic set of services and
resources. The agents, the services and the resources are
heterogeneous; they operate both in parallel and in
concurrency; they communicate; they have some goals (what
they would like to do), some duties (what they should do),
some rights (what they may do), and some constraints (what
they must not do).
The development of open systems in distributed computing is a result
of using computer and network technologies in real-world human
society. The complexity of open systems mirrors the complexity of
human society. Coordination languages usually extend the
declarations and statements of some base computation language, such
as C and Pascal, with additional facilities to support distributed
and/or parallel computation. Many coordination languages and models
have been proposed for open systems programming. Among these
approaches, the most popular one seems to be the concurrent
object-oriented language approach, since it provides a natural
environment for expressing concurrency and encapsulating distribution
in objects and messages. Objects are naturally suited to represent
real-world entities with private memory and predictable behavior, and
messages are communication media among objects. Most object-oriented
coordination languages focus on providing immediate language features
for building open systems and hard-code these features into the
language internals. One example would be supporting atomic actions
that guarantee serializability; however, it would then be difficult
to build applications with correctness criteria other than
serializability. Other object-oriented languages support
persistency, remoteness, monitoring, authorization, authentication,
etc. as immediate language features.
Like other languages, the ultimate goal of the MELDC language is to
support a wide range of high-level features for programmers to cope
with problems in designing open systems. Unlike other language
research, our focus is not to study what specific language features
should be designed for solving certain open system problems, but to
investigate the language architecture with which programmers are able
to construct --- without modifying the language internals --- new
features in a high-level and efficient way.
MELDC is a C-based, concurrent, object-oriented language built on a
reflective architecture. The core of the architecture is a
micro-kernel (the MELDC kernel), which encapsulates a minimum set of
entities that cannot be modeled as objects. All components outside
of the kernel are implemented as objects in MELDC itself and are
modularized in the MELDC libraries.
MELDC is reflective in three dimensions: structural, computational
and architectural. The structural reflection indicates that classes
and meta-classes are objects, which are written in MELDC. The
computational reflection means that object behaviors can be computed
and extended at runtime. The architectural reflection indicates that
new features/properties (e.g., persistency and remoteness) can be
constructed in MELDC. These properties can be attached to and
removed from objects at runtime. The reflective architecture
provides high flexibility to customize or extend object behaviors in
an elegant way. For example, a programmer builds a simple type of
persistent objects that do not survive catestrophic system failures
and then builds a comprehensive version of persistent objects that
survive system failures by applying redundancy to the simple ones.
In MELDC, persistency is not a language primitive, but just another
property that can be constructed for objects. The semantics of
persistency or policies to implement it are defined in MELDC.
Since micro-kernel facilities cannot be replaced or modified by the
MELDC programmer, several common choices are supported by the kernel
and can be designated by the programmer using compiler switches. For
example, MELDC intends to support a variety of parallel and
distributed applications that have different concurrency
characteristics. Some applications require a small number of
long-lived threads while others need a large number of short-lived
threads that are created and destroyed dynamically. Thus MELDC
provides three different thread packages (interleaving stack,
one-stack-per-thread and heap-based), which can be chosen with a
compiler switch. Other compiler options enable the programmer to
choose pre-emptive versus non-pre-emptive schedulers and either
merging or overriding behavior for multiple inheritance.
2. Status
The MELDC 2.0 implementation consists of about 15,000 lines of C, lex
and yacc for the compiler, 4,300 lines of C and 500 lines of assembly
code for the kernel, plus 10,000 lines MeldC runtime written in MELDC
itself. It runs on Sun4s with SunOS 4.1 and DecStations with Ultrix
4.2, although there are several limitations on the DEC version. This
is the first external release of MELDC, but version 1.0 has been used
internally as an educational language for undergraduate courses. The
release includes a user manual, compiler and runtime implementation
guides, a MeldC variant of the gdb debugger, and a sample program for
network monitoring.
References
[1] Gail E. Kaiser and Wenwey Hseush and Steven S. Popovich and
Shyhtsun F. Wu.
"Multiple Concurrency Control Policies in an Object-Oriented
Programming System".
In 2nd IEEE Symposium on Parallel and Distributed Processing,
pages 623-626. Dallas TX, December, 1990.
[2] Steven S. Popovich and Shyhtsun F. Wu and Gail E. Kaiser.
"An Object-Based Approach to Implementing Distributed
Concurrency Control".
In 11th International Conference on Distributed Computing
Systems, pages 65-72. Arlington TX, May, 1991.
[3] Wenwey Hseush and James C. Lee and Gail E. Kaiser.
"MeldC Threads: Supporting Large-Scale Dynamic Parallelism".
Technical Report CUCS-010-92, Columbia University, March, 1992.
[4] James Lee and Wenwey Hseush and Erik Hilsdale and Gail E. Kaiser.
Dynamic Orthogonal Composition in MeldC.
In 2nd Workshop on Objects in Large Distributed Applications.
Vancouver BC, Canada, October, 1992.
[5] Steven S. Popovich and Gail E. Kaiser.
"An Architectural Survey of Object Management Systems".
International Journal of Intelligent & Cooperative Information
Systems , 1993. In press.
The following postscript document is the MeldC license agreement. If you
have any program printing out the license agreement, please feel free to
contact us at MeldC@cs.columbia.edu.
/******************************cut here****************************************/
%!PS-Adobe-2.0
%%Title: license.2.0.mss
%%DocumentFonts: (atend)
%%Creator: Name not found%%EndComments
% PostScript Prelude for Scribe.
/BS {/SV save def 0.0 792.0 translate .01 -.01 scale} bind def
/ES {showpage SV restore} bind def
/SC {setrgbcolor} bind def
/FMTX matrix def
/RDF {WFT SLT 0.0 eq
{SSZ 0.0 0.0 SSZ neg 0.0 0.0 FMTX astore}
{SSZ 0.0 SLT neg sin SLT cos div SSZ mul SSZ neg 0.0 0.0 FMTX astore}
ifelse makefont setfont} bind def
/SLT 0.0 def
/SI { /SLT exch cvr def RDF} bind def
/WFT /Courier findfont def
/SF { /WFT exch findfont def RDF} bind def
/SSZ 1000.0 def
/SS { /SSZ exch 100.0 mul def RDF} bind def
/AF { /WFT exch findfont def /SSZ exch 100.0 mul def RDF} bind def
/MT /moveto load def
/XM {currentpoint exch pop moveto} bind def
/UL {gsave newpath moveto dup 2.0 div 0.0 exch rmoveto
setlinewidth 0.0 rlineto stroke grestore} bind def
/LH {gsave newpath moveto setlinewidth
0.0 rlineto
gsave stroke grestore} bind def
/LV {gsave newpath moveto setlinewidth
0.0 exch rlineto
gsave stroke grestore} bind def
/BX {gsave newpath moveto setlinewidth
exch
dup 0.0 rlineto
exch 0.0 exch neg rlineto
neg 0.0 rlineto
closepath
gsave stroke grestore} bind def
/BX1 {grestore} bind def
/BX2 {setlinewidth 1 setgray stroke grestore} bind def
/PB {/PV save def newpath translate
100.0 -100.0 scale pop /showpage {} def} bind def
/PE {PV restore} bind def
/GB {/PV save def newpath translate rotate
div dup scale 100.0 -100.0 scale /showpage {} def} bind def
/GE {PV restore} bind def
/FB {dict dup /FontMapDict exch def begin} bind def
/FM {cvn exch cvn exch def} bind def
/FE {end /original-findfont /findfont load def /findfont
{dup FontMapDict exch known{FontMapDict exch get} if
original-findfont} def} bind def
/BC {gsave moveto dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto closepath clip} bind def
/EC /grestore load def
/SH /show load def
/MX {exch show 0.0 rmoveto} bind def
/W {0 32 4 -1 roll widthshow} bind def
/WX {0 32 5 -1 roll widthshow 0.0 rmoveto} bind def
/RC {100.0 -100.0 scale
612.0 0.0 translate
-90.0 rotate
.01 -.01 scale} bind def
/URC {100.0 -100.0 scale
90.0 rotate
-612.0 0.0 translate
.01 -.01 scale} bind def
/RCC {100.0 -100.0 scale
0.0 -792.0 translate 90.0 rotate
.01 -.01 scale} bind def
/URCC {100.0 -100.0 scale
-90.0 rotate 0.0 792.0 translate
.01 -.01 scale} bind def
%%EndProlog
%%Page: 1 1
BS
0 SI
15 /Times-Roman AF
8550 10080 MT
(Columbia University)SH
14 SS
21527 XM
(in the City of New York)SH
/Times-Italic SF
39303 XM
(New York, N)SH
46322 XM
(.)
100 MX(Y)SH
47350 XM
(. 10027)200 W
16 /Symbol AF
37172 10280 MT
(\352)SH
8 /Helvetica AF
8550 12371 MT
(PROGRAMMING SYSTEMS LABORATORY)SH
39879 XM
(Department of Computer Science)SH
40542 13325 MT
(450 Computer Science Building)SH
46280 14279 MT
(\050212\051 939-7000)SH
8550 15233 MT
(MeldC@cs.columbia.edu)SH
44502 XM
(Fax: \050212\051 666-0140)SH
14 /Times-Bold AF
21750 23978 MT
(MeldC 2.0 Software License)SH
29256 25656 MT
(for)SH
20757 27334 MT
(Educational and Research Uses)SH
11 /Times-Roman AF
8550 33932 MT
(License agreement between)SH
8550 36324 MT
(Institution:)SH
8550 38957 MT
(Address:)SH
8550 43782 MT
(herein referred to as "You", and Columbia University in the City)
29 W( of New York, herein referred to)28 W
8550 44978 MT
(as "Us", or "We", regarding the MeldC 2.0 software and any)
15 W( future versions of MeldC designated)16 W
8550 46174 MT
(2.x \0502.1, etc.\051.)
67 W( This)
407 W( includes all programs, code and associated documentation you receive from)66 W
8550 47370 MT
(us and all modified versions or extensions that you may produce. Herein, this is all referred)
24 W( to as)25 W
8550 48566 MT
("the software and its derivatives":)SH
8550 50958 MT
(1. You)
275 W( agree that you will not sell or otherwise distribute the software and its derivatives;)SH
8550 53350 MT
(2. You)
617 W( acknowledge the confidential and valuable nature of the software and its derivatives.)171 W
8550 54546 MT
(You will not divulge or distribute the software)
74 W( and its derivatives to third parties, nor allow any)75 W
8550 55742 MT
(part of the software and its derivatives to be so divulged or distributed,)
139 W( unless express written)138 W
8550 56938 MT
(permission is given by us. You will instruct your employees, students or other persons)
2 W( authorized)3 W
8550 58134 MT
(to have access to)
116 W( the software and its derivatives not to divulge or distribute it to third parties,)115 W
8550 59330 MT
(unless express written permission is given by us;)SH
8550 61722 MT
(3. The)
275 W( software and its derivatives will be used only on computers you control;)SH
8550 64114 MT
(4. You)
909 W( agree that you will use the software and)
317 W( its derivatives solely for internal, non-)318 W
8550 65310 MT
(commercial research or academic purposes. Nothing in this agreement gives you the right)
19 W( to sell,)18 W
8550 66506 MT
(lease, distribute, transfer, sublicense, or otherwise dispose of the software and)
85 W( its derivatives, in)86 W
8550 67702 MT
(whole or in part, or to make any commercial use of it whatsoever;)SH
8550 70094 MT
(5. Title)
301 W( and copyright of the software and its derivatives will remain with us and shall at no)
13 W( point)12 W
8550 71290 MT
(transfer to you. You)
183 W( may make copies only for backup purposes, and they shall contain the)184 W
ES
%%Page: 2 2
BS
0 SI
11 /Times-Roman AF
8550 9305 MT
(original copyright notices we inserted;)SH
8550 11697 MT
(6. Official publications such as manuals, technical reports)
93 W( and articles in journals or conference)92 W
8550 12893 MT
(proceedings that are based on the)
78 W( ideas of the MeldC Project, its software or its derivatives will)79 W
8550 14089 MT
(give proper recognition to the MeldC Project in the Programming Systems)
186 W( Laboratory of the)185 W
8550 15285 MT
(Department of Computer Science at Columbia University and the people who worked on it;)SH
8550 17677 MT
(7. You)
399 W( acknowledge)
62 W( that the software and its derivatives are being supplied "as-is" without any)63 W
8550 18873 MT
(support services or future updates or releases. We may)
175 W( or may not make future updates and)174 W
8550 20069 MT
(releases designated MeldC)
74 W( 2.x available to you under this same licensing agreement, but we are)75 W
8550 21265 MT
(in no way obligated to do so. If you discover any error in the software)
167 W( or its derivatives, we)166 W
8550 22461 MT
(encourage you to inform us.)
44 W( We)
364 W( will not necessarily acknowledge or repair any such errors thus)45 W
8550 23657 MT
(reported;)SH
8550 26049 MT
(8. We)
521 W( make no warranties or representations of any kind, either express or implied,)
123 W( as to any)122 W
8550 27245 MT
(matter whatsoever, including merchantability or)
153 W( fitness for any particular purpose. You agree)154 W
8550 28441 MT
(that we shall not be held to any liability with respect to any claim by you or a third party arising)52 W
8550 29637 MT
(from or on account of the)
22 W( use of the software and its derivatives, regardless of the form of action;)23 W
8550 30833 MT
(whether in contract or tort, including negligence.)
47 W( In)
367 W( no event will we be liable for consequential)46 W
8550 32029 MT
(or incidental damages of any nature whatsoever;)SH
8550 34421 MT
(9. The)
118 W( user of the software and its derivatives will make sure that all potential users in his/her)119 W
8550 35617 MT
(environment are aware)
126 W( of this agreement and of the terms for using the provided software and)125 W
8550 36813 MT
(producing derived software.)SH
8550 42326 MT
(Institution:)SH
30150 XM
(Columbia University)SH
8550 44718 MT
(Address:)SH
30150 XM
(Department of Computer Science)SH
30150 47110 MT
(500 West 120th Street)SH
30150 49502 MT
(New York, NY 10027)SH
8550 51894 MT
(Email:)SH
30150 XM
(Email:)SH
8550 54286 MT
(Date:)SH
30150 XM
(Date:)SH
8550 56678 MT
(Name:)SH
30150 XM
(Name:)SH
8550 59070 MT
(Title:)SH
30150 XM
(Title:)SH
8550 61462 MT
(Signature:)SH
30150 XM
(Signature:)SH
ES
%%Trailer
%%Pages: 2
%%DocumentFonts: Times-Roman Symbol Times-Italic Helvetica Times-Bold
Technical Details
Message-ID:
<BzB55p.3I0@cs.columbia.edu>Path:
arc1-ca.pugleaf.net!sparky!uunet!spool.mu.edu!yale.edu!ira.uka.de!sol.ctr.columbia.edu!news.cs.columbia.edu!j-leeShow Full Headers
Complete Article Headers
Newsgroups: comp.lang.misc Path: arc1-ca.pugleaf.net!sparky!uunet!spool.mu.edu!yale.edu!ira.uka.de!sol.ctr.columbia.edu!news.cs.columbia.edu!j-lee From: j-lee@cs.columbia.edu (James Lee) Subject: Release of MeldC 2.0, A Reflective Object-Oriented Coordination Language. Message-ID: <BzB55p.3I0@cs.columbia.edu> Sender: news@cs.columbia.edu (The Daily News) Organization: Columbia University Department of Computer Science Date: Tue, 15 Dec 1992 15:46:36 GMT Lines: 475