Thanks for your patience on this everyone. It's a fair question, and the answer is a good one: yes, it's planned, the architecture is fully designed, and the first stage of it has already shipped.
The short version: Objo will get a package and extension platform, built in deliberate stages. It covers the three things people keep asking for: sharing Objo libraries as installable packages, calling into C# (and later C/C++) libraries from Objo apps, and eventually installable IDE extensions. The foundation - IDE Scripts, which let you automate Studio itself with Objo code - is already shippingin current Studio releases, and the typed automation layer underneath it is exactly the foundation the rest of the platform builds on.
To answer the question above about whether this is about distribution or an ABI: it's both. The plan is one package system with a shared envelope (identity, versioning, discovery), but two distinct trust models:
- Objo source packages - third-party Objo libraries, resolved to exact immutable versions and embedded in your solution so it stays self-contained. Same trust as your own source.
- Runtime bridge packages - a versioned ABI through which a package exposes a C# library (first) or a C/C++ library (later) to your application. These have full application-process trust and load into the app host that runs your program, never into Studio itself.
For C# developers specifically, the plan is a proper SDK. You'd annotate your classes with attributes (think [ObjoClass], [ObjoSharedMethod]), a source generator produces the registration glue plus an API metadata file, and Studio can then type-check and autocomplete your library without ever loading the assembly. Published apps carry the exact locked assets, so they keep working standalone on machines without Studio.
On declares: I've deliberately decided against an unrestricted Declare-style statement in the initial platform. A raw declare looks simple, but it pushes calling conventions, library search paths, memory ownership, callbacks, architecture selection, code signing, and crash diagnostics onto every Objo developer. A wrapped package centralises those hard parts and lets Studio reject an incompatible library before you ever run. For something like Chilkat (native libraries shipping for many platforms) the shape is a native runtime package declaring its per-platform binaries, which is exactly what the C ABI stage covers. I wouldn't hold your breath for Chilkat themselves to ship an Objo package, but the point of the bridge is that you or anyone in the community could wrap a library like that without waiting for me to add features to the standard library.
Honest status: scripting is shipped; packages and the runtime bridges are designed but implementation hasn't started, and I won't promise dates. The public tracking item is Support third party packages - votes and comments there on what you'd want first (source sharing versus the C# bridge) genuinely help me sequence the work.