Inferno(tm) is a new network operating system and programming environment for delivering content in a rich environment of heterogeneous networks, clients, and servers . The Inferno system includes the Inferno kernel, the Limbo(tm) programming language, reference APIs that include interfaces for networking and graphics, network protocols, security and authentication, and various toolkits. Inferno was developed by members of the Computing Sciences Research Center of Bell Laboratories, the research arm of Lucent Technologies.
Although the focus of Inferno is interactive media, its portability across hardware and operating platforms, its relative simplicity, and its strength in distributed computing make it attractive for distributed scientific computing as well. Inferno can run either on bare hardware or on top of another operating system such as Windows95 or Unix. Programs for Inferno are written in the Limbo language and compiled to machine-independent object files for the Dis virtual machine, which is then implemented with runtime compilation for best performance. The floating point environment provided by Limbo includes tight rules on expression evaluation, binary/decimal conversion, exceptions and rounding, and an elementary function library.
Limbo may be viewed as alternative to Java, but while Java is just a programming language, Limbo is supported by the Inferno full network operating system which includes security and authentication, naming protocols, directory services, and network interfaces. Inferno will eventually support other programming languages such as Java. Since Inferno developers plan to support Java, Inferno is more a complement to Java than a competitor.
As an example of the use of Limbo, ApproxWizard is an applet, developed in Limbo, that helps users select an approximation code. Instead of doing a keyword or hierarchical search, the user provides sample data and an objective. The ApproxWizard applet interacts with the user by doing calculations, either on the client or remotedly on servers, on sample user data sets that reside on the client disk. The Wizard looks for problem features and tries different algorithms. The applet uses dynamic loading and unloading so that all of the Netlib approximation code collection is potentially part of one program.