

1)  All p4 options now start with "-p4":

        -p4help           get this message
        -p4pg     <file>  set procgroup file
        -p4dbg    <level> set debug level
        -p4rdbg   <level> set remote debug level
        -p4gm     <size>  set globmemsize
        -p4dmn    <name>  set domainname
        -p4out    <file>  set output file for master
        -p4rout   <file>  set output file prefix for remote masters
        -p4ssport <port>  set private port number for secure server
        -p4log            enable internal p4 logging by alog
        -p4version        print current p4 version number


2)  The major change to this version of p4 may require a small change
    to user programs.  Because a number of users complained about the
    necessity of having a slave procedure even when it was unused, we
    have eliminated the requirement.  However, this caused us to
    slightly alter the interface, and thus may require some users to
    make small alterations to the start-up procedures in their
    programs.  The change is explained in detail (by example) below.
    For further examples, see the programs in the messages subdirectory,
    e.g. sr_test.c (SPMD) and sr_master.c / sr_slave.c (non-SPMD).


    For programs supporting the Single-Program-Multiple-Data (SPMD) 
    model, i.e. programs in which all processes execute the same program:

    Old Version                         New Version
    ------------------------------      ------------------------------

    #include "p4.h                      #include "p4.h"
	
    main(argc,argv)                     main(argc,argv)
    int argc;                           int argc;
    char **argv;                        char **argv;
    {                                   {
	p4_initenv(&argc,argv);             p4_initenv(&argc,argv);
	if (p4_get_my_id() == 0)            p4_create_procgroup();
	{                                   if (p4_get_my_id() == 0)
	    p4_create_procgroup();          {
	    master();                           master();
	}                                   }
	else                                else
	{                                   {
	    slave();                            slave();
	    exit(0);                            exit(0);
	}                                   }
	p4_wait_for_end();                  p4_wait_for_end();
    }                                    }


    
    Note that programs in which the master process executes one program
    and the remote slave processes execute some other program, the code
    for the master proces is essentially the same as that pictured
    above, except that if the programmer knows that a local slave
    process will never be "forked", then the call to slave can be
    eliminated.  Also, in this model, the programmer used to code the
    makefile such that the slave program would link with p4_cmain.
    This is no longer supported because p4_cmain explicitly invoked a
    procedure named "slave".  Instead, the user must now supply a small
    main procedure to invoke the slave procedure (which no longer has
    to be named slave).  An example main is given below (also, see
    slave_main.c in the messages directory).


    Separate Slave Main Procedure
    ------------------------------
    #include "p4.h"
    #include "sr_user.h"

    main(argc, argv)
    int argc;
    char **argv;
    {
	p4_initenv(&argc, argv);
	/*****
        if (p4_am_i_cluster_master())
	    p4_dprintf("I am the cluster master\n");
	*****/
	slave();
	p4_wait_for_end();
    }

