home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.compilers
- Path: sparky!uunet!world!iecc!compilers-sender
- From: meldc@cs.columbia.edu
- Subject: MeldC 2.0, A Reflective Object-Oriented Coordination Language.
- Reply-To: meldc@cs.columbia.edu
- Organization: Compilers Central
- Date: Tue, 15 Dec 1992 18:18:57 GMT
- Approved: compilers@iecc.cambridge.ma.us
- Message-ID: <92-12-069@comp.compilers>
- Keywords: C, OOP, available
- Sender: compilers-sender@iecc.cambridge.ma.us
- Lines: 283
-
- 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.
-
- /******************************************************************************/
-
-
- MELDC 2.0 SOFTWARE LICENSE
- FOR
- EDUCATIONAL AND RESEARCH USES
-
-
-
-
- License agreement between
-
- Institution:
-
- Address:
-
-
-
- herein referred to as "You", and Columbia University in the City of New
- York, herein referred to as "Us", or "We", regarding the MeldC 2.0
- software and any future versions of MeldC designated 2.x (2.1, etc.).
- This includes all programs, code and associated documentation you receive
- from us and all modified versions or extensions that you may produce.
- Herein, this is all referred to as "the software and its derivatives":
-
- 1. You agree that you will not sell or otherwise distribute the software
- and its derivatives;
-
- 2. You acknowledge the confidential and valuable nature of the software
- and its derivatives. You will not divulge or distribute the software and
- its derivatives to third parties, nor allow any part of the software and
- its derivatives to be so divulged or distributed, unless express written
- permission is given by us. You will instruct your employees, students or
- other persons authorized to have access to the software and its
- derivatives not to divulge or distribute it to third parties, unless
- express written permission is given by us;
-
- 3. The software and its derivatives will be used only on computers you
- control;
-
- 4. You agree that you will use the software and its derivatives solely
- for internal, non-commercial research or academic purposes. Nothing in
- this agreement gives you the right to sell, lease, distribute, transfer,
- sublicense, or otherwise dispose of the software and its derivatives, in
- whole or in part, or to make any commercial use of it whatsoever;
-
- 5. Title and copyright of the software and its derivatives will remain
- with us and shall at no point transfer to you. You may make copies only
- for backup purposes, and they shall contain the original copyright notices
- we inserted;
-
- 6. Official publications such as manuals, technical reports and articles
- in journals or conference proceedings that are based on the ideas of the
- MeldC Project, its software or its derivatives will give proper
- recognition to the MeldC Project in the Programming Systems Laboratory of
- the Department of Computer Science at Columbia University and the people
- who worked on it;
-
- 7. You acknowledge that the software and its derivatives are being
- supplied "as-is" without any support services or future updates or
- releases. We may or may not make future updates and releases designated
- MeldC 2.x available to you under this same licensing agreement, but we are
- in no way obligated to do so. If you discover any error in the software
- or its derivatives, we encourage you to inform us. We will not
- necessarily acknowledge or repair any such errors thus reported;
-
- 8. We make no warranties or representations of any kind, either express
- or implied, as to any matter whatsoever, including merchantability or
- fitness for any particular purpose. You agree that we shall not be held
- to any liability with respect to any claim by you or a third party arising
- from or on account of the use of the software and its derivatives,
- regardless of the form of action; whether in contract or tort, including
- negligence. In no event will we be liable for consequential or incidental
- damages of any nature whatsoever;
-
- 9. The user of the software and its derivatives will make sure that all
- potential users in his/her environment are aware of this agreement and of
- the terms for using the provided software and producing derived software.
-
-
-
- Institution: Columbia University
-
- Address: Department of Computer Science
-
- 500 West 120th Street
-
- New York, NY 10027
-
- Email: Email:
-
- Date: Date:
-
- Name: Name:
-
- Title: Title:
-
- Signature: Signature:
-
- --
- Send compilers articles to compilers@iecc.cambridge.ma.us or
- {ima | spdcc | world}!iecc!compilers. Meta-mail to compilers-request.
-