Trac is being migrated to new services! Issues can be found in our new YouTrack instance and WIKI pages can be found on our website.

Version 16 (modified by ecoffey, 17 years ago) (diff)

--

Overview

Mono is a Open Source implementation of the .NET runtime. The Mono Loader aims to embed mono into libpurple so that plugins can be written in any .NET Language.

Mono Loader SoC Development Notes

SoC Goals and Milestones

  • Completely wrap libpurple API in .NET bindings.
  • Fix the Mysterious Seg Fault On Exit (tm).
  • Re-examing and possibly re-implement signal-glue and API -glue code.
  • Give .NET Purple objects the ability to actually update their C counterpart (or create one). Possible solution: Every api Object thats mapped to a purple object would inherit from Object. Object would have a IntPtr pointing to the C structure (or null if this is a "new" object). A potential constructor could look like:
    public class Object {
        private IntPtr _c_structure = null;
        Object(IntPtr struct) {
           _c_structure = struct;
           _updateFromStruct();
        }
    }
    
    And derived classes could be responsible for implementing _updateFromStruct(). Derived classes would also have to handle creation of their specific C struct:
    public class Buddy : Object {
       Buddy(IntPtr struct)
          : base(struct)
       {
       }
    
       Buddy()
       {
          _c_structure = purple_buddy_new_glue();
       }
    }
    
  • Right now delegates are invoked and just given an array of their data. Would be nice if we could explicitly state what they expect, e.g. OnBuddyStatusChanged(Buddy b, Status s)

Mentor Goals/Objectives? (grim)

  • Implement signal chaining in Mono so Pidgin's signal handling doesn't get eaten up by the Mono runtime. See Mono Bug 75990.
  • Fix the build system so that make can be run successfully with multiple jobs.

Loader Internals:

  • There must be a better way for having the loader handle signals on behalf of .net plugins (will document the current implementation here).

All information, including names and email addresses, entered onto this website or sent to mailing lists affiliated with this website will be public. Do not post confidential information, especially passwords!