0.8.1 Release

=Release Notes=

General
Welcome to OpenSimulator 0.8.1, an open-source multi-user 3D virtual environment and metaverse server platform.

As ever, OpenSimulator is a highly complex system. Various usage scenarios (standalone, grid, hypergrid, etc.) in combination with different dependencies (e.g. different versions of mono on Linux/Mac) can sometimes produce unexpected or unstable behaviour.

If you are upgrading from a previous verson of OpenSimulator, then we strongly recommend that you start off with the default configuration files and port over any changes you made to your older version of OpenSimulator.

As this is a wiki page, please feel free to update it with more information about migration or other issues as and when these come to light.

You can download this release of OpenSimulator from http://opensimulator.org/wiki/Download

Known issues

 * Arbitrary key:value storage for regions has not yet been implemented for SQLite or MSSQL. This is necessary for temporary attachments settings to be persisted.  This functionality is considered experimental.
 * Regression in RLV functionality where objects given via the llGiveInventoryFolder function with a folder name with the format #RLV/~gift are still placed in the #RLV folder but now with the name still as "#RLV/~gift" rather than just "~gift". This is being addressed in http://opensimulator.org/mantis/view.php?id=6311.  Any help from viewer developers on this would be much appreciated.
 * No form of prim equivalence is implemented for meshes.
 * Loading scripts from the library section of inventory does not work properly.
 * The non-default Warp3D maptile generator currently leaks memory very badly. We recommend that you only use this once at the beginning of each simulator session.
 * Experimental PGSQL adaptor has bugs when used with built-in groups and built-in user profiles.
 * For other bugs please see the OpenSimulator Mantis bug tracker.

Requirements
OpenSimulator requires:


 * .NET Framework 4 when running under Windows.
 * At least Mono 2.8 when running under Mono (Linux or Mac). However, we recommend using at least Mono 2.10 as Mono 2.8.x has been reported as less stable in some situations when running OpenSimulator.  Mono 3 has also been reported as working well with OpenSimulator.

Database

 * MSSQL support has been removed as it had not been maintained for more than 2 years and nobody was able to commit to supporting it.
 * This release includes database migrations for PGSQL only.

Script Engine
This release changes the default strategy for stopping scripts to one known as co-operative (co-op) rather than abort (abort). This is set with the ScriptStopStrategy parameter in the [XEngine] section of OpenSim.ini.

The abort approach simply aborts the thread running the script if it does not stop within a timeout. In rare cases, particularly with heavily loaded simulators, the threads ends up being aborted in the middle of critical code which can lead to runtime instability and crashes. The co-op is more stable as it inserts checks within the compiled script code to ensure a clean script stop.

However, this new setting requires scripts to be recompiled. This cannot be done automatically. Hence, if on startup the script engine encounters a script compiled for a different stop strategy (e.g. the script is compiled for the abort strategy where the configuration is set to co-op) then a warning is logged. The script will still be started using the compiled in strategy.

If you see this message to force recompilation of script DLLs please set [XEngine] DeleteScriptsOnStartup = true for at least one simulator session or delete the compiled script DLLs manually. This will remove all old script DLLs allow them to be recompiled. The script state and the scripts themselves will *not* be lost.

Alternatively, you can set [XEngine] ScriptStopStrategy = abort explicitly. However, this is not recommend as it still allows runtime instability. The option remains for debug purposes.

General Server

 * Console command history will be saved between session if ConsoleHistoryFileEnabled = true in the [Startup] section of config. This is not currently enabled by default.

General Simulator

 * Simulator will now complain and not startup if two regions are configured with the same UDP address. Previously, one would just get mysterious problems instead.
 * Added experimental facility to allow a server to alter aspects of the viewer's user interface by information sent through the SimulatorFeatures region capability. This is not currently documented but some example configuration can be found in the Diva Distribution.  Her experimental open-source OnLook viewer understands these new settings

Configuration

 * A new configuration feature was added that allows one to refer to a previous config value in later config values. In the OpenSimulator configuration files, some values are specified in a [Const] section and then used later on.  For instance, when PublicPort is defined like so

then it can be referenced later on with the syntax ${|}, e.g.

This allows a parameter to be set once and reused as necessary. Older configuration files which don't use this facility will continue to work.

Services

 * llHTTPRequest is disallowed from making requests to private service endpoints. If you need to allow this, set AllowllHTTPRequestIn = true in the [Network] or individual [*Service] sections in Robust.ini/Robust.HG.ini.
 * Registered varregions can no longer accidentally overlap other regions.
 * Added a get_grid_extra_features endpoint to the grid service. This returns SearchURL, MapTileURL, DestinationGuide and ExportSupported to simulators so that they don't need to be set separately on each simulator.
 * "show grid size" service console command added to show a grid's approximate size in km squared. Will not be accurate if regions crash or are halted without the normal deregistration from the grid service on simulator shutdown.
 * The GetMesh capability can now be directly served from an asset service much like the GetTexture capability.

Hypergrid

 * Fixed an issue where attachments could sometimes disappear or appear twice after a cross-grid teleport.
 * Reduced simulator CPU and memory usage when importing attachments from a foreign asset service for user display.
 * Introduced better control of HG attachment rezzing for users with lots of attachments or multiple users entering a region at once.
 * Fixed an issue where a simulator could continuously attempt to retrieve a foreign user's Hypergrid service URLs if the initial request failed.
 * Hypergrid destinations support added to user profiles picks for built-in profiles.
 * Current grid URL and name were added to the SimulatorFeatures capability to allow viewers to display this information when the user visits foreign grids.

Archiving

 * The content of exported IARs can now be filtered based on copy/modify/transfer permissions as can already be done for OARs.

Avatars

 * Improved avatar movement responsiveness.
 * Avatar walk speed no longer slows if the camera is panned around them with the left mouse button.
 * Crouching avatars no longer slide if the camera is panned.
 * The stand position of an avatar is now correct if a script moves them whilst they are seated.
 * Specifying a login position with decimal points now rounds these rather than failing login.
 * Reduced AgentUpdate UDP message triggering sensitivity to 0.1 from 0.01. This has not proven noticeable to viewers and decreases the UDP message traffic processing on high concurrency regions.
 * Automatic periodic appearance refresh is now disabled by default. The problem which this was implemented to fix (avatar appearances being missing) appears to have gone away.  Disabling this reduces outgoing UDP traffic for simulators, particularly heavily populated ones.
 * Added "wearables show" command which will show information on an avatar's wearables (shape, eyes, etc.). Analogous to the existing "attachments show" command.
 * Added "wearables check" command to check that all assets required to display a wearable can be found.

Friends/Profiles

 * Classifieds can now be deleted in core profiles.
 * Fixed handling of user preference updates if no e-mail address has been specified for a user.

Groups

 * PGSQL database adaptor added for built-in groups.
 * Added missing EventHost power to the groups owner in built-in groups.

Instant Messaging

 * Group name added to group IMs. This is used by some viewers (e.g. Singularity but not Firestorm) to show information on receiving a group message.

Inventory

 * Fixed passing of folders to Hypergrid visitors.
 * Cross-grid inventory delivery notifications fixed.

Objects

 * The click action of an object is now correctly set back to touch if it is bought.
 * An owner of an object can now take a copy with just copy perms - they don't also wrongly need transfer perms.

Map

 * No significant changes in this release.

Mesh/Sculpt

 * Textures from uploaded meshes now show up as texture items in the user's inventory.

Monitoring

 * No significant changes in this release.

NPC

 * No significant changes in this release.

Physics

 * Embedded BulletSim updated to 2.82.
 * In BulletSim, avatars no longer flop onto the floor when flying at very low heights.
 * In BulletSim, avatar terminal velocity when falling was implemented.
 * In BulletSim fixed possible exceptions if a linkset was created when a child mesh was not available.
 * In BulletSim implemented the LSL VEHICLE_FLAG_LIMIT_ROLL_ONLY flag.
 * In BulletSim fixed an issue where the simulator could fail to startup due to race conditions in handling the list of avatars.
 * In BulletSim added AvatarToAvatarCollisionsByDefault option. This will disable such collisions if set to false.  Default is true.  This is the same as the existing av_av_collisions_off setting in ODE.
 * In BulletSim fixed an issue where the simulator could sometimes crash in Windows when processing multiple physics meshes.
 * In ODE fixed an issue where the avatar could not jump and move forwards when facing south or west.

Region/Estates/Parcels

 * UDP update sending performance improved for regions with large numbers of agents (50+).
 * Accuracy of scene update timing improved.
 * Fixed an issue where a neighbouring varregion would sometimes not show up for users.
 * Kick user estate management viewer functionality implemented.
 * Added a "show region" console command to show all the parameters of the current region show as host name, agent limits, etc.

Region Cross/Teleport

 * Fixed an issue where a viewer could stop responding if a user crossed very rapidly back and forth between regions. Current solution is to disallow cross until the previous cross has completed.
 * Responsiveness of teleport and login to highly loaded simulators was improved.
 * Region crossing for avatars somewhat improved. Velocity and avatar travel direction is now preserved.
 * Teleporting via the map to a varregion was improved.
 * Added a "region set" console command that allows agent-limit and max-agent-limit to be set. agent-limit sets the current avatar limit for a region which can also be done directly in the viewer.  However, many viewers impose a limit of 100.  The max-agent-limit imposes a maximum number for agent limit.  For instance, if this is set to 50 then agent-limit cannot be set on the console or in the viewer to more than 50.

Sound

 * No significant changes in this release.

Terrain

 * By default, terrain information is now sent in an area centred on the avatar rather than for the entire region. This is to enable better responsiveness in varregions.  This can be controlled via [Terrain] SendTerrainUpdatesByViewDistance.
 * Rectangular terrain features can be created on the console via a new "terrain feature" console command.
 * LLRAW files that are multiples of 256 can now be loaded into varregions.

Voice

 * No significant changes in this release.

Scripting

 * llHTTPRequest and osSetDynamicTextureURL* script functions are now prevented from making calls to localhost and addresses on the LAN hosting the simulator by default. If you need to make exceptions to this rule, please configure [Network] OutboundDisallowForUserScriptsExcept as appropriate.  More information on setting this is in OpenSim.ini.example.
 * Many inaccuracies in reporting compile error line and column numbers were fixed.
 * llLookAt improved.
 * llRotLookAt improved.
 * llSetAngularVelocity implemented.
 * llSetRotationVelocity, llTargetOmega and llLookAt implemented for ODE.
 * [LL-Functions] RestrictMail parameter added so that one can restrict llEmail to only send e-mail to the script owner's e-mail address.
 * Added the LSL transaction_result event.
 * OBJECT_ROT and OBJECT_VELOCITY in llGetObjectDetails now returns the avatar properties if the script is in an attachment.
 * llSetPrimitiveParams calls are no longer ignored after llSetTextureAnim(FALSE).
 * In llGetPrimitiveParams and similar functions the alpha value returned by PRIM_TEXT is no longer inverted.
 * Calling llStopMoveToTarget in an attachment script will now stop the avatar if it was moving to a target.
 * Giving the name of a non-existing item to llGiveInventory no longer wrongly generates an exception as well as an error.
 * Implemented osForceOtherSit with threat level VeryHigh. This allows a script to sit an avatar without a permission request.
 * osNpcMoveToTarget will now do nothing if called for a seated NPC rather than generating an exception.

Test

 * The pCampbot load testing facility was vastly improved to reduce false positives.

Acknowledgements
Many, many thanks to all the developers, testers and community members who contributed to this release and who help out with OpenSimulator generally. Your hard work makes this all possible.