From: j-lee@cs.columbia.edu (James Lee)
Subject: Release of MeldC 2.0, A Reflective Object-Oriented Coordination Language.
Organization: Columbia University Department of Computer Science
Date: Tue, 15 Dec 1992 15:46:36 GMT



                               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