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