Welcome to Inferno

This README file contains important, last minute information
about the Inferno operating system Release 1.0 distribution. 

Before you install Inferno, carefully read the installation
instructions in the Inferno documentation AND these release notes.

1. General Information 
   A. Minimum system requirements
   B. How to get help
   C. Installation
   D. The Introduction to Inferno program (DSP)

2. Caveats and Known Problems
   A. General
   B. Compilation
   C. Microsoft Windows Environment
   D. Demo Applications
   E. Limbo
   F. Miscellaneous

A. Minimum System Requirements
Minimum system requirements are listed on page 2-4 in the Inferno User's Guide.

B. How to get help
If you have any problems with this product, please read this file, the 
documentation and online help first. 

If you still have a question and need assistance, help is available via 
email at the following address:


When requesting technical support via email, please provide the 
following information:

  o Computer name and model and the name and model of any additional 
    hardware (video adapters, modems, etc.).

  o The specific steps necessary to reproduce the problem you are 

  o Operating system version number.

  o A description of your operating environment (path variable,
    networking, etc).

  o Your name and phone number.

C. Installation

Installation and setup instructions are provided in the User's Guide. 
The following installation notes add information that is likely to 
change in the future and is not contained in the manual.

Under Windows, you should not install to the same directory that contains
a Setup.exe.

Services File:
Inferno requires that a number of entries be added to your system 
Services file. Setup will fail to do this when the user does not have 
Read/Write permissions on the Services file. This typically occurs on 
NT installations where the user does not have Administrator privileges, 
in such cases you will need to have your system administrator update 
the services file. The file <inferno_root>\services.txt contains the 
service entries to be added.

NTFS Installation:
When installing Inferno on an NTFS partition, it is recommended that 
you have Full Control over either the Inferno target directory, if it 
exists prior to Setup, or its parent directory.

For example, when installing to \users\inferno, you should have
Full Control over \users\inferno (if \users\inferno exists) or \users.

If you intend to use Charon, the Inferno browser, from behind a
firewall, you must edit the <inferno_root>/services/webget/config
file to include the proxy server name and port number. Enter the 
appropriate httpproxy value according to the example provided in the 
configuration file.

D. The Introduction to Inferno program (DSP)

The Introduction to Inferno (DSP) is a simple Inferno program implemented
in the Limbo programming language that illustrates some of the key
features of the Inferno operating system. Because the program requires
that you establish an authenticated connection, an Inferno server must be
running in order to run the program. The will execute on a single machine
as long as it has been set up as a server. (See the documentation sections
about setting up Inferno on a single machine in loopback mode.)

Use the following procedure to run the tutorial:

   1. Start the emulator using the -g800x600 option.

   2. In the Inferno console window of the server machine,
      run lib/srv. By default, DSP assumes that the local
      machine is the server.

   3. Start the window manager with the wm/logon command.

   4. From the Inferno button, select Introduction to Inferno

DSP opens with a series of slides describing Inferno and the DSP
application. Selecting Next and Back, you can navigate through the 
series of slides. From the last slide, the DSP application is launched.

If your Inferno network includes multiple file servers, you can
run DSP in a fully distributed manner. In order to configure
the servers, follow the example profile in



See the Installation section of this file for problems related to the 
installation process.

A. General 

The default emu window size is 640x480 in order to accomodate the
widest range of display devices possible. This size is appropriate
for the mux demonstration programs but too small for general use
with the window manager. For better appearance, we recommend that
you start emu with the -g option set to at least 800x600.

Limbo executables generated by Beta versions of the Limbo compiler will
not run on the Release 1.0 virtual machine. All existing Limbo programs
must be recompiled.

JPEG files with "progressive huffman encoding" are not supported. Some 
AVI syntax is also not supported.

The DES interface has been replaced with 40-bit RC4 in this 
distribution to comply with US government export restrictions. The 
DES interface can be ordered by contacting Inferno sales.

Module signing has been disabled in this release for similar reasons.


Running pwd in a bound directory may produce the following error:

	pwd: file does not exist

B. Compilation

The JIT compiler does not schedule threads in the same way as the 
interpreter. That is, quanta can be unpredictable when generated by the 
JIT compiler.


Module-specific compilation does not currently allow mixed JIT and 
non-JIT applications using limbo with the -c or -C option. 
To work around this problem, use the -c1 option with emu to compile 
all modules or do not run any JIT-compiling modules.

When emu is run with the -c1 option (to enable JIT) under Irix 5.3 or
Irix 6.2, the following error will be displayed when "Financial Reports"
is selected in the mux application:

	application protocol error: unknown message 269099172

Pressing "Enter" a second time (i.e., after having selected
"Financial Reports") will cause the mux application to lock;
no further keyboard activity will be recognized by mux and 
emu will have to be restarted.

When JIT is used under Windows, mathcalc aborts with an error message if you 
try to use any mathematical functions. The program works with JIT off.

C. Microsoft Windows Environment

Windows Uninstall:
It is recommended that you delete an Inferno instance via the 
Uninstall program found in the Inferno folder. Uninstall will 
delete the Inferno files and registry keys that were added by the 
installation. The registry keys are used by Setup to detect a 
previous instance of Inferno.

Inferno Setup adds the following keys to your registry under 

\SOFTWARE\Lucent Technologies\Inferno\Release 1.0
\SOFTWARE\Microsoft\Windows\Current Version\App Paths\emu.exe
\SOFTWARE\Microsoft\Windows\Current Version\Uninstall\InfernoDeinstKey

The names of physical files in the Windows environment are 
case-insensitive. This may cause name collisions and inadvertent 
overwriting of files.

File ownership under Windows NT:

NT does not support a chown() command, but Inferno needs one when the 
Inferno tree is installed on an NTFS system.

So, Inferno uses the primary group field of the NTFS file to hold the 
owner of the Inferno file. The primary group field is normally only
used when an application is running under a posix subsystem; Inferno 
runs under the Windows subsystem.

When a file foo is created by Inferno and a chown(uid, foo) is 
executed, foo's NT group field will be set to uid. When a file is 
stat'd by Inferno, stat() will return the this group field as the 
file's owner.

Note that when viewed from outside of Inferno, NT file ownership does
not change. When a file is created, the NT owner is that of whomever
started up the emu.

To set a file's Inferno owner outside of Inferno (i.e., set the group
field), there is a separate executable called setown that resides in the 
<inferno_bin>. The syntax is:

	setown [-R] [domain\]username file...

where username may be prefixed with the domain in which username resides. 
If it is not prefixed, the local machine and then the primary domain
is searched for the user. The -R option recursively descends any 
directories on the command line 

So for example, when a new user is added to inferno, we go to the NT 
shell and do the following:

	mkdir $InfernoRoot/usr/bar
	setown bar $InfernoRoot/usr/bar
File ownership under Windows95:

This problem does not exist on Windows 95 since there is no
notion of users owning files.

When running X-terminal packages under Windows, you must use 
256-color mode set to pseudo or static color, or 24-bit mode set 
to true color. Use:

	Control Panel>>Display>>Settings:Color palette

Do not use 16-bit True Vision when running X-terminal packages
under Windows 95.

D. Demo Applications

Running the Inferno Web Browser:
When you invoke the Inferno Web Browser via Inferno's Window 
Manager, the Windows PATH variable will be used to locate 
the Web executable. Your PATH should include the directory where
the Inferno executables are installed, that is,


Running the Othello and Connect4 games under mux requires:

1) that the game marshal be added to the system services file, e.g.,

	gamed 6702/tcp
   to /etc/services on Unix systems
   to c:\windows\services on Windows 95
   to c:\winnt35\system32\drivers\etc\services on Windows NT 3.51
   to c:\winnt\system32\drivers\etc\services on Windows NT 4.0

2) that the game program be added to the basic services file under
   inferno, i.e., add:


   to the file services/basic.

3) that an instance of the games marshal be running under each
   inferno that wants to participate in the games. The argument
   to gamed is the name of the machine that will serve as the
	pcwork21$ mux/gamed pcwork21 &
	gamed: iamserver 1
   The master will say that it is server 1, all others will claim to
   be server 0.


Attempting to run the debugger on the animated coffee demo will break 
the coffee window and make it unusable. The coffee window may still 
be deleted through the task manager window.

Viewing graphic intensive web pages may cause a segmentation fault
in Limbo Tk.

Images which are "too large" may cause Charon to give up on that page.

E. Limbo 

The following is (incorrectly) accepted by the limbo compiler but 
(correctly) produces a runtime error.

A: adt {
	i: int;
	foo: fn(a: self ref A);
A.foo(); # compiler should reject
	  # instead, may get -- OSFault "Bus error" -- at runtime

The adt A is valid for calling a function within that adt but it is not
an instance of the adt and as such can't be supplied to the function as
an argument. The function call A.foo() is therefore illegal.

F. Miscellaneous

The chmod u-w, chmod g-w, chmod o-w commands do not work properly
and provide a misleading diagnostic.

The gif2pic command does not work.