ACOS Program

An ACOS Program is any Lua script running under ACOS that is not an application. Programs differ from applications, because they do not require the ACOS Runtime to be executed. Programs are usually scripts or applications intended to either run under CraftOS, OneOS or any other ComputerCraft operating system or to be compatible across different CC platforms.

ACOS keeps compatibility with 3rd party software by providing a native-like sandbox for all running programs.

Program Types
Since there are lots of operating systems and lots of environments programs can run in available for ComputerCraft, there also are many types of programs that can be run under ACOS. AndySoft tries to keep compatibility with every and all applications available. This is possible because of the way different program types are handled and their information is stored on the local machine.

Program Specification File
A Program Specification File (*.psf) is a BSON-encoded binary file which stores crucial information about a program type. This includes information on how the program environment should be structured, what libraries are needed to run it and where they are stored. A PSF file also specifies what directory structure should the sandbox have. Majority of CraftOS programs, for example, requires to be run in the root directory of the local machine. This is obviously a poor design from the developer, but to make troubleshooting easier ACOS sandboxes the program so that it "thinks" it is running in the root directory, while the real destination is kept hidden from the program.

PSFs are generalized, that means they are not exclusive to every single program but rather to every platform. For example, Sketch (a OneOS program) would fit the specifications of the same PSF file as Transfer (another OneOS program). Therefore, PSF files have to contain clear instructions on how to distinguish one program type from another. This is technically done by creating a proxy for the program environment, running it with no output and logging global accesses. These accesses are then compared with the installed PSF specifications. The one that matches best is then used during normal execution of the program.

Sometimes, the process of deciding which PSF to use may fail, or produce unclear output. In case two or more PSFs match the program behaviour, the user is asked to choose which PSF to use. There is always an option to change the PSF configuration for a specified program (or all programs of a directory) manually.

Program Specification Files are installed initially via Delta and then updated automatically. No new PSFs are installed during updates, unless a new kind of program was found on the local machine. PSFs can also be installed manually using the Shell or downloaded via AndyStore.