Changes to ANTS for First Public ANTSR Release

NOTE: This documents the changes from ANTS 1.[12] to ANTSR. It does *not* document the changes made when merging ANTS 1.3 into ANTSR to create ANTS 2.0.

Rationale and motivation: The NodeOS interfaces defines InChannels, OutChannels, and CutThroughChannels, Threads, packet filters, Addresses, and Domains (Processes). We take advantage of these primitives wherever possible in ANTS. In many cases the new abstractions are much cleaner than the implicit abstractions defined in ANTS.

Many internal parts of ANTS had to change to accommodate precise resource control. For example, we start up a new Domain (a new process) as early as possible to charge the resources used in downloading code and creating Domain-specific state to the appropriate Domain. This required fundamental changes to the way protocols are stored and forwarded.

We strove to not change the programming interface used by ANTS protocols and applications. Minor changes were introduced into the startup and definition of an application.

Updated class and object names. While making wholesale changes to the infrastructure we took the opportunity to rename classes that had evolved beyond their original design. For example, 'Method' in the old ANTS actually stood for a Class. It is now named 'CapsuleClass'.

Specific Changes: Removed the Entity, Manager, ManagedObject classes. These were for tracking logging and debugging state. This information has been moved out into the NodeOS logging interface and the NodeOS debugging interface. The Entity class still exists. It simply does standardized argument parsing and usage printing.

Dropped Extensions for now. Not sure what they really are and have never seen one.

Dropped the NodeCache and CodeCache. The functionality of these classes is subsumed by the per-process state and resource control provided by the NodeOS. We do not have a facility for inter-domain sharing, though. This deficiency will have to be addressed in the next release.

Made the ANTS Node.Java use the NodeOS Node.Java interfaces.

Added the MIDID resquest/response as a stage in the dynamic code loading protocol. This provides information about the user and resource limits of the new domain that is being created.

Made the distinction between an ANTS address (a 32-bit IP-like integer) and the underlying physical address (a IP address and port number) explicit and documented.

Renamed ANEPChannel to ANEPDomain. Renamed Method to CapsuleClass. Renamed InChannel to CapsuleChannel (sort of). The "resource" limit on a Capsule is now merely a time-to-live hop-count.

Moved the routing table and protocol out of the core ANTS package. It is just a slightly privileged protocol now.

Take heavy advantage of the packet filtering functions in the NodeOS interface to directly dispatch packets to the appropriate Domain.