A pre-alpha version of the C# version of libsecondlife has just been checked in to SVN (and I'm almost positive my SL password isn't in the project file this time). The C++ codebase was moved in to a directory called libsecondlife and the new C# version sits alongside it in the trunk, in the directory libsecondlife-cs. Although performance isn't comparable to the original version, there is no noticeable performance impact for any of the example programs and I don't think it will be an issue for 99% of programs that will utilize libsecondlife. Being a fresh rewrite it also gets rid of all of the cruft in the old codebase, and implements a slightly different model. It uses a asynchronous sockets each wrapped in their own Circuit class, where each Circuit is responsible for triggering callbacks. This removes the incoming packet queue and it's associated mutexes and complexity. It also removes all threading code from the library as the multi-threading is handled at the system socket layer, and libsecondlife is only responsible for dispatching callbacks. libcurl was removed as a dependency and replaced with the native System.Net.WebRequest, so there are no external dependencies. Combining that with the MSVC 2003.NET project files and full mono compatibility and it's very straightforward to compile this library on any platform. We've gotten early tests up and running on a PocketPC platform, so the SL IM client for mobile phones is hopefully just around the corner.

I don't have any intention of trying to kill the C++ version, but I think the C# version fixes all of the problems we were having; pointer vs. shared_ptr, boost.build broken or difficult to install on some platforms, difficult to compile and link with boost libraries, extra libcurl dependency, endianness troubles, and threading bugs. Hopefully these problems will be solved, and the C++ version will get some extra spring cleaning in general, but I am working full time on my Google summer of code project (MythTV) these days and also start school again in a week and a half so any time I have will likely be focused on the C# fork.

What all of this means is a new release is just around the corner, libsecondlife-cs 0.0.3. I decided to start at 3 so the version numbers between libsecondlife and libsecondlife-cs stay in sync, so the version can be used to denote what features are present. The only new feature that will likely make it in to the new release is (limited) teleport support, and a few new packets.

Now that we have a couple users on the mailing list, everyone please feel free to submit ideas of what you want to see in the library or what kind of clients/agents you want to see written. For example, I think the name2key databases could be replaced by an agent that queried using DirPeopleQuery. Also if anyone wants to toy with objects, Jeffrey Gomez's blender plugin would be very grateful.

John Hurliman
[EMAIL PROTECTED]

_______________________________________________
libsecondlife-dev mailing list
libsecondlife-dev@gna.org
https://mail.gna.org/listinfo/libsecondlife-dev

Reply via email to