-------- VOS 0.21 -------- Some of the biggest changes in this release are: * This version contains a new networking system called VOS Infrastructure Protocol (VIP), a new transport protocol built on UDP to support low-latency messaging and multiple parallel data streams in a single connection. Consequently almost all URLs have changed to use a new scheme instead of vop://: vip://[:port]/ * The VOS 3D Browser Ter'Angreal is being rewritten from scratch, but now has a wxWidgets-based GUI (wxterangreal), which supports chatting, loading new avatars, bookmarking worlds and loading worlds from COD files and more. * Many improvements to the VOS plugin to the Crystal Space 3D engine * Better Windows support (compiles under MinGW). Now provides a Windows exe installer. * Debian packages available for x86 via apt-get * Should now compile and run on OS X -------- VOS 0.20 -------- Welcome to S4! S4 makes many improvements over S3, and there are many major API changes: General Codebase Changes ------------------------ * Include paths have changed. libvos headers are in . All metaobjects (including GUI and 3D) are in . * typechain and libpluginloader are no longer included with VOS, and are now optional. * libtracking is removed * COD has been moved into the core libvos Core VOS API Changes -------------------- * LocalSite::flushIncomingBuffers() has been removed. Sites run in a new thread now. If your main run loop was just flushIncomingBuffers, you can simply run in a loop and sleep, or use an OS provided run loop. * To create a new local Site with a TCP socket, use an extension to Site rather than LocalSocketSite: Site site(true); site.addSiteExtension(new LocalSocketSiteExtension()); * When creating a new vRef, you can choose the initial refcount value. vRef(new Foo(), false); // don't increment refcount (will be 1) vRef(new Foo(), true); // do increment refcount (will be 2) In general, vRef's are used everywhere, including as arguments or return values from methods. * meta_cast is no longer part of the MetaObject class, and generally works on vRefs now, instead of pointers. // Foo* = MetaObject::meta_cast(&Bar); // Old way Foo = meta_cast(Bar); // New way * New metaobjects have been added to represent identities that can be used by access control policies: Identity and Group. Access control policies are now represented by access control lists, associating Identities with AC policies by name (objects also have a default policy if the requesting object has no Identity or is not in the ACL) To set the default for new objects on a site "site" to the equivalent of the old "NoObjectAccessControl", do this: site.setDefaultPolicy("core:accept-all"); To set property access control on a Property: p->setDefaultPolicy("property:accept-all"); AC identifiers for any type can be used on any object, and they can be changed remotely. For more explanation of AC, see * Object "extensions" have been added, which allow you to modify the behavior of any Vobject without subclassing. See the API documentation. * Site searches have been improved, and a new query syntax has been introduced. * Metaobjects register automatically with site factory via static classes so you don't need to call Foo::registerExtenders() anymore. See vosdefs.hh for macros that you should use when writing new metaobject classes. * Some methods/classes have been renamed or added. Here is a partial list: * ParentChildRelation is no longer within Vobject * ParentChildRelation has accessors for position, name, etc. * methods that return lists (e.g. Vobject::getChildren) return thread-safe copies rather than a reference to the internal STL container. These lists provide special iterators (e.g. VobjectIterator) * MetaObjects' getType() has been renamed getVOSType() * Most exceptions are no longer embedded in other classes * ... and more ... TerAngreal and A3DL ------------------- * Most of the code in TerAngreal for creating CrystalSpace objects from A3DL objects has been moved into the CrystalSpace project as a plugin. This allows for more reuse among 3D applications. * A new type has been added, object3D.clone. This type gives you an easy way to create 3D objects with different transforms, but all other properties identical, in A3DL. GUI --- * Metatronic has been converted into a library, libmetatronic, which provides access to the wxWindows implementation of VOS GUI from any other application. * Notebook and tree controls have been added Service Discovery ----------------- * libservicediscovery has been removed, instead mDNS is used via the Howl library. * The APIs for Services have changed completely. The Services metaobject now provides the bridge between your app, remote service directories and local net service discovery (via rendezvous). servicelistd no longer needs to be run by clients, only if you want to have a permanent service directory. (And it's been renamed vos_servicelistd)