Changes from version 3.0 to 3.1
Ported to OCaml version 2.0
- PLAN language addtions and alterations
-
Added
- Static Type-Checking
The main advantage of this is that type-safety can be known by the
programmer before actually injecting the packet into the network. The user
provides types for the services to be used by the type-checker via
service declarations.
- Type Inference
This allows the programmer to omit the type tags and let the type inference
system determine them automatically. If the inference system is unable to
resolve types to ground type (i.e., they are polymorphic), then an error
occurs; this error may be resolved by providing explicit tags. The next
version of PLAN will allow polymorphic types.
Changed
- Chunk Literal Syntax
In order to better illustrate the part of the chunk that is dynamically
resolved, we moved the |'s to just surround the function
identifier; e.g., in PLAN 3.0 we would have |f()|, and we now have
|f|().
- Security Services
-
We have added some cryptographic-based security features for PLAN services.
We provide a mechanism for the authentication of chunks, using a slight
variant of the protocol defined by SANE, the Secure
Active Network Environment. For service authorization, we have integrated
with QCM, the Query
Certificate Manager. A demonstration application is provided as well as a
guide to the new features.
- Packet formats
-
We have added conditionally-compilable support for
ANEP.
- Java Host API
-
We have added stubs to enable host applications to be written in Java which
can exchange packets with our OCaml-based PLANet. Provided are a PLAN lexer
and parser written in Java, and class definitions which describe the PLAN
packet wire format. An option has also been added to allow PLAN ports to be
implemented using TCP/IP sockets, rather than Unix Domain Sockets (which
don't have a Java API).
- Improved PLAN Loader
-
We've added a more general mechanism for building the loader. This
resulted in fewer copied files (able to shrink the "common" directory), and
has eliminated previous limitations on which platforms may use the loader
(i.e., no longer just Linux).
Changes from PLAN 2.2 to 3.0