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