ARES is a small nanokernel operating system written in the Second Life Linden Scripting Language. It is normally used to power immersive HUD attachments for roleplaying as a robot, but in principle can be adapted as a general-purpose platform through the addition and removal of system components.
ARES provides a robust API which is quite dissimilar to normal LSL programming. Here are the highlights:
- Many common "
ll
"-prefixed LSL functions are renamed for brevity and convenience. This was optional in Companion but highly encouraged in ARES. These definitions come from theutils.lsl
file in the SDK root. - No
default {}
state—the program's entry point for command-line use is theSIGNAL_INVOKE
block inside amain()
function. Timers and events likeon_rez
are emulated through kernel signals, but can still be implemented for programs that need high performance. - A basic stream API is used for text input and output, similar to Unix pipes.
llSay(0, "Hello World!");
is nowprint(outs, user, "Hello World!");
— pipes can be chained together to automatically pass messages from one program to another, or even in and out of normal chat.
ARES software development requires the Firestorm viewer, which augments the LSL compilation process with the Boost::Wave preprocessor. The SDK includes UDL 2.1 syntax highlighting definitions for Notepad++ (provided you like dark mode.)
To install the SDK, download this Git repo's contents into a new directory (ideally one without any spaces in the path), and configure Firestorm's preprocessor (Preferences > Firestorm > Build 1) to point at it. The LSL preprocessor must be enabled, along with the 'Script optimizer' and '#includes from local disk' checkboxes.
Not all of the files in the ARES SDK may be reused freely. Your use of the SDK is subject to the terms of the ARES Software Copyright License. Please make sure you are familiar with the terms of the ASCL's different sublicenses before downloading.
Once the SDK is installed, look for the file ARES/application/template.lsl
as a basis for writing your own programs.
Device development for ARES is similar to development for Companion, and most of the familiar processes still apply. Most development is done using the light bus, albeit with minor differences. For the time being, starting materials can be found from the Companion 8 SDK, available for free from our store in Eisa. ARES also uses many of the public bus commands, and compatibility with ACS devices and interference is similar to that of Companion.
The server axtest:0 in Eisa contains the sample
package, which is a self-documenting template for creating your own packages.
ARES package servers are not yet available for purchase. In the interim, note that any inventory items (with the exception of scripts) ctrl-dragged onto the ARES HUD will be automatically relocated to user memory, where you may act upon them.
Most of the files in the SDK are ASCL-iii, which is a "BSD-like" permissive open source license that allows for closed-source derivatives. However, many (especially those in the ARES/application/
directory) fall under more restrictive licenses, as summarized below.
file | description | terms |
---|---|---|
ARES/application/calc.lsl | calculator | ASCL-ii (copyleft/share-alike) |
ARES/application/db.lsl | database utility | ASCL-ii (copyleft/share-alike) |
ARES/application/define.lsl | wiki lookup | ASCL-ii (copyleft/share-alike) |
ARES/application/filter.lsl | vox filters | ASCL-i (modding only) |
ARES/application/find.lsl | grep clone (WIP) | ASCL-ii (copyleft/share-alike) |
ARES/application/fortune.lsl | GNU fortune frontend | ASCL-ii (copyleft/share-alike) |
ARES/application/fortune.h.lsl | GNU fortune frontend (dependency) | ASCL-i (modding only) |
ARES/application/help.lsl | manual interface | ASCL-ii (copyleft/share-alike) |
ARES/application/id.lsl | system configuration tool | ASCL-i (modding only) |
ARES/application/land.lsl | parcel and region utilities | ASCL-ii (copyleft/share-alike) |
ARES/application/lslisp.lsl | LSLisp programming language | ASCL-ii (copyleft/share-alike) |
ARES/application/mantra.lsl | self-hypnosis tool | ASCL-ii (copyleft/share-alike) |
ARES/application/mail.lsl | email utility | ASCL-ii (copyleft/share-alike) |
ARES/application/media.lsl | sound & animation playback widget | ASCL-ii (copyleft/share-alike) |
ARES/application/media.event.lsl | sound & animation playback widget (dependency) | ASCL-ii (copyleft/share-alike) |
ARES/application/news.lsl | RSS aggregator | ASCL-ii (copyleft/share-alike) |
ARES/application/persona.lsl | personality configuration tool | ASCL-ii (copyleft/share-alike) |
ARES/application/scidb.lsl | scientific database query tool | ASCL-ii (copyleft/share-alike) |
ARES/application/tell.lsl | sends chat messages | ASCL-ii (copyleft/share-alike) |
ARES/application/xset.lsl | captures standard output | ASCL-ii (copyleft/share-alike) |
ARES/system/exec.lsl | command shell | ASCL-i (modding only) |
ARES/system/exec.event.lsl | command shell (dependency) | ASCL-i (modding only) |
ARES/system/policy.lsl | security policies | ASCL-i (modding only) |
ARES/system/power.lsl | subsystem manager | ASCL-i (modding only) |
ARES/system/security.lsl | user access control | ASCL-i (modding only) |
glob.lsl | Linux filename pattern matching | Dual GPL 2.0 and MIT |
lslisp.lsl | LSLisp programming language | ASCL-ii (copyleft/share-alike) |
lslisp.h.lsl | LSLisp programming language | ASCL-ii (copyleft/share-alike) |
In case of disagreements or omissions between actual files and the entries above, license declarations inside the files take precedence.