0.7.5 Release
From OpenSimulator
Release Notes
General
Welcome to OpenSimulator 0.7.5, an open-source multi-user 3D virtual environment/metaverse server platform.
As ever, OpenSimulator is a highly complex piece of alpha software. It's very likely but not guaranteed to work and various usage scenarios (standalone, grid, hypergrid, etc.) in combination with different dependencies (e.g. different versions of mono on Linux/Mac) can produce unexpected or unstable behaviour. If it breaks you get to keep both pieces.
If you are upgrading from a version prior to 0.7.x, make sure to read the 0.7 Release notes. There have been extensive changes in OpenSimulator from 0.6.x to 0.7.
When you are upgrading, 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, otherwise this regression may remain in the final 0.7.5 release.
- In a stock Linden Lab viewer 2/3, various tabs and buttons will point back to the Linden Lab website. In particular, the profile data will try to fetch from the Linden Lab website. It's not known currently how/whether this can be changed in the stock viewer.
- No form of prim equivalence is implemented for meshes.
- Loading scripts from the simulator library does not work properly.
- Multiple attachments on a single attachment point not supported.
- Bulletsim physics engine support is in an intermediate state in this release and may not work at all under Linux. This will not affect users since the Open Dynamics Engine (ODE) remains the default physics engine in-use on OpenSimulator.
- Mono.Addins DLLs have been updated for this release from version 0.5 to version 0.6 in order to support the experimental plugin repository functionality for the ROBUST services host (not yet the simulator itself). Since these are strongly named assemblies, external DLLs added to OpenSimulator that are built against previous OpenSimulator versions may generate exceptions on load such as
20:45:29 - [DATASNAPSHOT]: Creating directory DataSnapshot log4net:ERROR DefaultRepositorySelector: Unhandled exception in GetInfoForAssemb ly System.IO.FileLoadException: Could not load file or assembly 'Mono.Addins, Versi on=0.5.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' or one of its depe ndencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) File name: 'Mono.Addins, Version=0.5.0.0, Culture=neutral, PublicKeyToken=0738eb 9f132ed756'
The solution here is to get new assemblies which are built against the 0.6 Mono.Addins DLLs in OpenSimulator 0.7.5, or on Windows, make sure the DLLs are built with Specific Version = false for the Mono.Addins references. Alternatively, one may be able to make the DLL use the 0.6 Mono.Addins DLLs instead with a bindingRedirect.
Requirements
OpenSimulator requires:
- .NET Framework 3.5 when running under Windows.
- At least Mono 2.4.3 when running under Mono (Linux or Mac). Mono 2.6.x and Mono 2.10.x onwards work well. Mono 2.8.x versions are reported as less stable in some situations. OpenSimulator should also run under Mono 3.0.3 although, as with Mono 2.10 and earlier, there are still issues when running under the optional new sgen garbage collector . Some physics issues (at least on ODE) have been reported but we are not sure if these are still a problem on Mono 3.0.3. OpenSimulator does not run well (and sometimes not at all) on Mono 3.0.0 to 3.0.2 (Xamarin labels all Mono 3 versions as beta at this time).
Backwards Compatibility Notices
- This release includes database migrations but these should be backward compatible with OpenSimulator 0.7.3.1 (i.e. one could rollback to 0.7.3.1 if necessary without also rolling back the database). However, this is not a guarantee - please always backup your data before migrating from earlier OpenSimulator versions.
- Due to a libomv bug fix, teleports in this release are incompatible with OpenSimulator 0.7.0.2 and earlier. This affects primarily Hypergrid teleports, since simulators within the same grid tend to be all in the same version. Teleports to OpenSimulator 0.7.1 and later should work.
Changes
General Server
- Default endpoint connection limit increased from 2 to 12, which will allow 12 simultaneous connections to an IP:Port combination rather than just 2. Experience suggests this will improve data fetching from ROBUST services. However, this change may not affect Mono installations due to a bug which is still be present in Mono 3.0.3 but will be fixed in its next release. Separately, the number of simultaneous allowed asset requests to a connection was raised to 30. This will affect both Mono and Windows.
- The server no longer occasionally throws an error on shutdown due to the late stop of the PollRequestManager. However, this may still happen due to aborting of running scripts on shutdown.
- Added facility to log outgoing http data via the "debug http" console command.
- More levels added to the "debug http" command to allow logging of incoming POST data. This command can be useful to debug configuration problems.
- The "show http-handlers" command now shows HTTP handlers listening on every port of that server - not just the 'main' port.
- "help all" console command will now show all commands in the old big list style instead of categorized.
- Dynamic plugins (Robust). Subscribe to remote repositories and install plugins from them. Enable and disable the plugins on the fly. See: http://opensimulator.org/wiki/Feature_Proposals/PluginManager for further information.
General Simulator
- The long (+4 years) deprecated IRegionModule interfaces for region modules have now been entirely removed. You may need to convert to the newer INonSharedRegionModule/ISharedRegionModule interfaces but this is not too difficult.
- Region debug console implemented, as accessed via the ctrl + shift + ` (backtick) keyboard shortcut in recent viewers. Only estate owners and managers can access this. Typing help at the prompt will show currently available commands (currently only auto_grant_attach_perms for temporary attachments).
- UDP related memory use by client connections improved. This should reduce the amount of memory used by each client connection as so reduce rubberbanding under Mono on busy simulators as memory is garbage collected. However, the affect may be swamped if there are many active scripts. There is further scope for improvement in this area.
- HTTPGetTexture capability now properly handles a request with no second value in the range header (e.g. 5333- to fetch all bytes from 5333), rather than just complaining on the console. This operation is being done by the latest LL viewer code (3.4.4).
Configuration
- Nonphysical* Regions.ini configuration names for controlling prim dimensions have been renamed to more consistent NonPhysical* names (e.g. NonphysicalPrimMin -> NonPhysicalPrimMin).
Services
- The "show http-handlers" console command is now available for ROBUST as well as the simulator.
- Inbound HTTP connectors can now be specified one per line in the [Startup] section of Robust.ini rather than in one large block.
- The ROBUST asset service now returns a 400 (bad request) HTTP status if appropriate rather than simply dropping the request.
- "show uptime", "show info", "set log level", "show version", "config show/get/set/save", "show threads", "thread abort" and "force gc" commands now available on the ROBUST console as well as the simulator console.
Hypergrid
- For the items below, please see Diva Canto's HG 2.0 blog post for more details.
- Avatar appearance issues when using hypergrid 'suitcase' folder fixed.
- Attachment issues when visiting other grids via the Hypergrid fixed.
- Issue fixed where assets accessed from foreign sims did not tranport the full chain of assets necessary for rezzing (e.g. the textures referenced by an object inside the rezzed object).
- Visitor access control to regions improved.
- Hypergrid Instant Mesasge now accounts for an offline IM storage service if present.
- Default Hypergrid config now changed to 2.0 from 1.5. On upgrading you will need to checking your existing Hypergrid configuration against the updates in Robust.HG.ini.example or config-include/StandloneCommon.ini.example as appropriate.
Objects
- Undo steps for object changes are no longer stored without limit. This meant that over time, a simulator with changing objects would use more and more memory that would not be released. The MaxPrimsUndo limit in the [Startup] section of OpenSim.ini is now enforced. The default is 20 steps.
- Minimum allowed sizes for physical and non-physical prims can now be configured. See the [Startup] section of OpenSim.ini.example for more details.
- Corrupted child prim permissions can no longer make objects change permissions after they have been rezzed.
- ReuseDynamicTextures option improved to work around a bug where an attempt to reuse a very small dynamic texture would cause the viewer not to properly redisplay it when it was pulled from its cache.
- Further crash bugs with very heavy use of dynamic textures by scripts fixed.
- Linkset sizes can now be restirected via the LinksetPrims value in the [Startup] section of OpenSim.ini.
- Setting llVolumeDetect(FALSE) on an object where volume detect has been previous set will now correctly clear the phantom flag.
- "show object pos" console commands added. These show object information by position on the console and are meant for debugging.
- More information added to various "show object" console commands for diagnostic purposes.
- "delete object pos <start-coord> to <end-coord>" console command added. This can be useful to delete all objects in a given volume of space.
- "dump object id" console command added to dump object serialization for any region object by its local or UUID. For diagnostics.
Mesh/Sculpt
- Fixed issue where imported mesh objects would have their base prim turned around by 90 degrees and their child prims turned in the wrong direction. These should now import in the same rotations as they appear in the viewer preview.
- Mesh/Sculpt loading reliability improved.
Avatars
- Fixed OpenSimulator 0.7.4 regression where a logged out avatar could still sometimes be present in the connections list which would stop relog or visit of the scene until the simulator was restarted.
- Fixed OpenSimulator 0.7.4 and even earlier regression where objects attached directly from the region would often not show up as attached.
- Temporary attachments implemented. This is currently not well documented in OpenSimulator.
- Facility to periodically resend appearance UUIDs (ResendAppearanceUpdates setting in the [Appearance] section of OpenSimDefaults.ini) now set to true by default. This has been shown to help with grey avatar issues.
- Current animation is now retained by an avatar as it moves between regions, as long as both source and destination region are running this version of OpenSimulator or later.
Physics
- Many updates to bulletsim in the areas of collisions, fps calculation, floating, friction, linksets, materials, megaregions, mesh, pushing, region crossings, shapes, terrain, vehicles. However, this should still be considered experimental in this release.
- Movement of physical prims in ODE plugin improved.
- Teravus added an experimental plugin for the C# XNA port of the bullet physics engine. This is likely to be slower than the C++ version but may give better debugging information where necessary.
Sound
- No noteworthy changes in this release.
Parcels/Region/Estates
- Bug fixed where having more than 63 users in an estate's banlist would cause the viewer to crash when the estate dialog was opened.
- Bug fixed with SQLite plugin where some parcel settings (such as media settings) were not persisted.
- AllowRegionRestartFromClient [EstateManagement] config option added by which estate managers can be prevented from restarting regions (since this may still be unstable on current OpenSimulator, though fixes in this area have been implented0>
Map
- Map information lookups from viewers can no longer appear to freeze the scene if the map service is not responding quickly.
Instant Messaging
- No noteworthy changes in this release.
Friends
- No noteworthy changes in this release.
Archiving
- Group ownership now properly changed to none when objects are loaded from an OAR where the group UUID is not present on that simulator.
- Parcel access lists now properly reconstructed on OAR load.
- Loading OARs containing deeded land parcels will now properly preserve the group as the owner if the group UUID is accessible by that simulator.
- "save iar" console command no longer hangs the console permanently if an asset save times out.
- "load iar" console command no longer fails if one or more components of a coalesced object (an item consisting of a group of differet linksets) has corrupt XML. You may still get a massive message on the console but the load of other inventory contents will continue.
- Support for multi-region OAR files added. As the name suggests, these are OAR files that store more than one region in an OAR. This is controlled using the --all switch on the "save oar" console command - currently the default is still to save single regions. This should be considered experimental.
NPC
- Fixed some script crashing race conditions if one script removed an NPC whilst another was fetching its details.
- NPCs can now move within the entire area of a megaregion rather than being stuck in the 'root' 256x256m area.
- llRequestPermissions() calls now always succeed for unowned NPCs, where they only worked for appropriately owned NPCs before.
Inventory
- Fixed issue where newly created body parts and clothing sometimes did not appear in the user's inventory.
- Fixed issue where renaming a worn article of clothing after it had been edited would cause the item to not be found within inventory on viewer relog.
- Inventory folder versioning now much better implemented. This may cut down on excess requests by the viewer for inventory information as these were triggered by a mismatch between it's expected folder version numbers and those persisted by OpenSimulator. This may help with issues seen on OpenSimulator 0.7.4 where many requests for people with large inventories would lead to other region issues (see http://opensimulator.org/mantis/view.php?id=6412).
- Item properties that should never change (e.g. creator and owner) can no longer be updated. This should prevent and help identify bugs in this area as change attempts are logged. See http://opensimulator.org/mantis/view.php?id=6359 for more details.
Groups
- Group information requests can no longer hold up the main incoming packet processing loop, which could lead to apparently frozen regions if the groups service was slow to respond.
Monitoring
- OpenSimulator 0.7.4 regression fixed where viewer stats sent by viewers were no longer being recorded in the LocalUserStatistics.db if this faiclity was enabled.
Test
- pCampbot fixed to work again under Windows.
Scripting
- Script runtime error messages now displayed by version 3 and related third party viewers.
- Static methods from region modules can now be registered for calling by scripts using the modInvoke facility.
- WaitForEventCompletionOnScriptStop option added to the [XEngine] configuration section of OpenSim.ini. This is to provide a way to examine an issue where thread aborts of scripts still executing events (e.g. when an object is derezzed) can sometimes cause Mono 2.6 amd 2.10 to crash badly, with symptoms such as 100% cpu use and threads waiting for locks which no other thread holds. Default for wait period is 1 second but this can be increased. Tradeoff is that 'rogue' scripts will take longer to stop. May be increased in the future, though the ultimate solution will have to completely avoid thread aborts by co-operative script termination.
- llResetOtherScript() now waits for the WaitForEventCompletionOnScriptStop timeout before forcibly aborting another script if it is still running an event. This is an effort to avoid the mono crash issues outlined above when this function is heavily used.
- llGetLinkKey() fixed to always return the avatar that last sat on an object if given the the last link number.
- llGetLinkName() fixed to always return the avatar name that last sat on an object if given the last link number.
- llRequestPermissions() now automatically gets granted appropriate permissions from avatars that are sat on an object other than the very first avatar to sit on that object.
- The attached event now correctly fires when an object is attached directly from the region.
- The money event now goes to the clicked prim rather than always the root prim of a linkset.
- llSetLinkCamera() implemented.
- Behaviour of llList2*() functions made to better match LL when converting input values.
- ATTACH_*_PEC constants added
- PRIM_LINK_TARGET implemented on llGetPrimitiveParams() and similar functions.
- PRIM_SLICE implemented for llSetPrimitiveParams() and similar functions.
- llSetPrimitiveParams() and similar functions can now correctly disable flexy prims.
- llPlaySound() fixed to play sounds from the prim the script is in rather than the root prim.
- llLoopSound() now continues playing in a child prim when a sound is played in the root prim.
- llPlaySound() now consistently stopped by llStopSound().
- llDialog() fixed so that a script can hear responses no matter where a user has moved to within the region, rather than only when they are within shout range.
- llListStatistics() no longer ignores the last element in some operations.
- llParticleSystem() default PSYS_SRC_BURST_PART_COUNT now properly 1 rather than 0.
- OpenSimulator 0.7.4 regression fixed where the DATA_SIM_POS option on llRequestSimulatorData() would not return information on regions that were in the same simulator.
- Issue fixed with llListFindList() would not return a match if a script constant was used int he source list.
- llGetLinkName() fixed for LINK_THIS constant.
- CLICK_ACTION_ZOOM constant added.
- osGetHealth() added to return health information on an avatar where this is enabled.
- osSetContentType() added which allows setting of an arbitrary return type for an URL set up by llRequestUrl().
- osGetNumberOfAttachments() added to return the number of attachments given a list of attachment points.
- osMessageAttachments() added to allow a script to send a link message to an avatar's attachments.
- osDropAttachmentAt(), osForceDropAttachment() and osForceDropAttachmentAt() OSSL functions added.
- osListenRegex() function added which acts like llListen() but allows filtering by regular expression on name or message content of listen reports.
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 :)