Modeling - Semantics - Multicultural Activities
Greetings from Germany.
Currently I'm totally obsessed with the CAMlog project, so nothing else on this page
for the time being...
The CAMlog Project
- Goals Of The Project
- Current Status Of The Project
- Next Steps
- Version History
- Known Bugs
An alpha version along with some documentation is available.
1. Goals Of The Project
After the advent of the Unified Modeling Language (UML) it is high time for a
new attack on the 'executable specification' problem, or, as I would like to
state it more modestly, a 'programming and modeling' language.
The intention of the CAMlog project is to serve as a platform for anexperiment
in that direction.
Apart from the context of modeling, CAMlog currently is just another functional
programming language - but with a high emphasis on integration into the object
2. Current Status Of The Project
Currently the language(!) might be called a beta, the current releases of the
compiler should be considered prototypes.
To be more precise, the functional fragment of the language is complete, but the
monadic parts are to be extended.
As for the compiler, being a prototype means there is more emphasis on e.g.
verbose output of intermediary code to assist the development of new semantical
analysis features, but rather little user friendlyness for the application
programmer and not much in terms of runtime library.
We have however a quite impressive collection of programming examples to show
how powerful CAMlog already is.
3. Next Steps
Currently the focus is on documentation.
- CAMlog User Guide (preliminary version exists)
- CAMlog Language Description
- CAMlog Scripting API documentation
- CAMlog Quick Reference
- For the brave at heart: CAM assembly language programming
- Extend the type inference algorithm to perform determinism analyis. This is
neccessary to incorporate mutable state in such a way that it is compatible
with the other monadic features.
- The virtual machine supports a more general concept of continuation than the
type checker accepts. Can this be improved?
- Incorporate some optimizations of the INRIA people, e.g. the recognition and
allocation of non-closure variables.
- Add a blindingly fast C backend (VM). Conceptually everything is clear, but
we have not yet made a decision on the garbage collection issue. We might
start with a simple self implemented copy-collect, or use some available GNU
- A nice little GUI frontend and an Applet frontend for the Web.
Packaging and Deployment:
- The current release comes in two jars only, the previous one is available as
a GNU package. In the future packaging will be synchronized.
4. Version History
- January 1st 2004: First version with proper packaging published.
- February 1st 2004: Improved frontend and some documentation.
5. Known Bugs
- Mixing constants and recursive function definitions in one def-term generates
bad code that will produce runtime crashes.
Currently it is not worth repairing this, because the handling of mutually
recursive function definitions will change due to some optimization (It is
currently a straightforward fixpoint implementation).
- For some reason, an external implementation of the 'Solutions' function
fails. (Currently a CAM assembly language routine is used.) This means that
something must be wrong with passing nondeterminism through the host language
interface (Java backend).