Generate Types and StructuredData API shims

This commit is contained in:
2026-08-08 11:56:13 +02:00
parent d3f5e27f52
commit 0a2e7dd057
15 changed files with 12120 additions and 5154 deletions

View File

@@ -48,7 +48,7 @@ External member APIs are not copied. Each signature type resolves to Rust core/s
- Delegates and flags enums: **40 / 46**
- Optional/ref/out/in parameters: **470 / 6,144 / 555 / 0**
- Async Rust signatures: **360**
- Descriptively renamed overloads: **7,131**
- Descriptively renamed overloads: **7,137**
- Explicit CLR delegate APM differences: **80**
Run `python3 tools/generate_rust_mapping.py --check` to regenerate in memory and enforce the complete gate.

View File

@@ -37,6 +37,8 @@ Regenerate or validate the Rust mapping with only Python's standard library:
```sh
python3 tools/generate_rust_mapping.py
python3 tools/generate_rust_mapping.py --check
python3 tools/generate_api_shims.py
python3 tools/generate_api_shims.py --check
```
The checker rejects duplicate C# IDs, duplicate Rust destinations, invalid
@@ -48,3 +50,9 @@ fallbacks, and generated function bodies that do not use the standardized
The two support traits in `RUST-TYPES.tsv` are included because compiled public
inheritance records reference them even though they are absent from the public
type table.
`generate_api_shims.py` consumes the catalog and reviewed mapping ledger. It
currently owns the completed Types and StructuredData slices, formats their
generated Rust deterministically, and rejects any missing or stale type/member
documentation ID. `SHIM-COVERAGE.md` distinguishes callable slices from the
remaining milestone work; mapping coverage alone is not callable coverage.

File diff suppressed because it is too large Load Diff

View File

@@ -3092,7 +3092,7 @@ T:System.Action`1 System.Action<T> System.Private.CoreLib delegate core callback
T:System.Action`2 System.Action<T1, T2> System.Private.CoreLib delegate core callback Box<dyn Fn(T1, T2) + Send + Sync> language not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.Action`3 System.Action<T1, T2, T3> System.Private.CoreLib delegate core callback Box<dyn Fn(T1, T2, T3) + Send + Sync> language not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.ApplicationException System.ApplicationException System.Private.CoreLib class libremetaverse-types compat libremetaverse_types::compat::ApplicationException native_cross_platform_replacement not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.Array System.Array System.Private.CoreLib class std Vec<T> stdlib_or_adopted_crate not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.Array System.Array System.Private.CoreLib class libremetaverse-types libremetaverse_types::compat::Array stdlib_or_adopted_crate not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.AsyncCallback System.AsyncCallback System.Private.CoreLib delegate Box<dyn Fn(&dyn std Box<dyn Fn(&dyn std::any::Any) + Send + Sync> stdlib_or_adopted_crate not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.Attribute System.Attribute System.Private.CoreLib class libremetaverse-types libremetaverse_types::compat::Attribute stdlib_or_adopted_crate not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.Boolean System.Boolean System.Private.CoreLib struct core primitive bool language not_applicable not_applicable not_applicable mapped external member surface is not copied
@@ -3135,7 +3135,7 @@ T:System.Func`1 System.Func<TResult> System.Private.CoreLib delegate core callba
T:System.Func`2 System.Func<T, TResult> System.Private.CoreLib delegate core callback Box<dyn Fn(T) -> TResult + Send + Sync> language not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.Globalization.CultureInfo System.Globalization.CultureInfo System.Private.CoreLib class libremetaverse-types compat libremetaverse_types::compat::CultureInfo native_cross_platform_replacement not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.Globalization.UnicodeCategory System.Globalization.UnicodeCategory System.Private.CoreLib enum libremetaverse-types compat libremetaverse_types::compat::UnicodeCategory native_cross_platform_replacement not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.Guid System.Guid System.Private.CoreLib struct uuid uuid::Uuid stdlib_or_adopted_crate not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.Guid System.Guid System.Private.CoreLib struct libremetaverse-types libremetaverse_types::compat::Guid stdlib_or_adopted_crate not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.IAsyncDisposable System.IAsyncDisposable System.Private.CoreLib interface libremetaverse-types compat libremetaverse_types::compat::IAsyncDisposable native_cross_platform_replacement not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.IAsyncResult System.IAsyncResult System.Private.CoreLib interface Box<dyn std Box<dyn std::any::Any + Send + Sync> stdlib_or_adopted_crate not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.ICloneable System.ICloneable System.Private.CoreLib interface std Clone stdlib_or_adopted_crate not_applicable not_applicable not_applicable mapped external member surface is not copied
@@ -3197,7 +3197,7 @@ T:System.Type System.Type System.Private.CoreLib class libremetaverse-types lib
T:System.UInt16 System.UInt16 System.Private.CoreLib struct core primitive u16 language not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.UInt32 System.UInt32 System.Private.CoreLib struct core primitive u32 language not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.UInt64 System.UInt64 System.Private.CoreLib struct core primitive u64 language not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.Uri System.Uri System.Private.Uri class url url::Url stdlib_or_adopted_crate not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.Uri System.Uri System.Private.Uri class libremetaverse-types libremetaverse_types::compat::Uri stdlib_or_adopted_crate not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.ValueTuple`2 System.ValueTuple<T1, T2> System.Private.CoreLib struct core tuple (T1, T2) language not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.ValueTuple`3 System.ValueTuple<T1, T2, T3> System.Private.CoreLib struct core tuple (T1, T2, T3) language not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.ValueTuple`4 System.ValueTuple<T1, T2, T3, T4> System.Private.CoreLib struct core tuple (T1, T2, T3, T4) language not_applicable not_applicable not_applicable mapped external member surface is not copied
@@ -3205,7 +3205,7 @@ T:System.ValueTuple`6 System.ValueTuple<T1, T2, T3, T4, T5, T6> System.Private.C
T:System.ValueType System.ValueType System.Private.CoreLib class libremetaverse-types libremetaverse_types::compat::Value stdlib_or_adopted_crate not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.Void System.Void System.Private.CoreLib struct core primitive () language not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.Xml.XmlElement System.Xml.XmlElement System.Private.Xml class libremetaverse-structured-data libremetaverse_structured_data::xml::Element stdlib_or_adopted_crate not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.Xml.XmlReader System.Xml.XmlReader System.Private.Xml class libremetaverse-structured-data libremetaverse_structured_data::xml::Reader<R> stdlib_or_adopted_crate not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.Xml.XmlReader System.Xml.XmlReader System.Private.Xml class libremetaverse-structured-data libremetaverse_structured_data::xml::Reader stdlib_or_adopted_crate not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.Xml.XmlTextReader System.Xml.XmlTextReader System.Private.Xml class libremetaverse-types compat libremetaverse_types::compat::XmlTextReader native_cross_platform_replacement not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.Xml.XmlTextWriter System.Xml.XmlTextWriter System.Private.Xml class libremetaverse-types compat libremetaverse_types::compat::XmlTextWriter native_cross_platform_replacement not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.Xml.XmlWriter System.Xml.XmlWriter System.Private.Xml class libremetaverse-structured-data libremetaverse_structured_data::xml::Writer<W> stdlib_or_adopted_crate not_applicable not_applicable not_applicable mapped external member surface is not copied
T:System.Xml.XmlWriter System.Xml.XmlWriter System.Private.Xml class libremetaverse-structured-data libremetaverse_structured_data::xml::Writer stdlib_or_adopted_crate not_applicable not_applicable not_applicable mapped external member surface is not copied
Can't render this file because it is too large.

21
api/SHIM-COVERAGE.md Normal file
View File

@@ -0,0 +1,21 @@
# Callable shim coverage
Generated by `python3 tools/generate_api_shims.py`; do not edit by hand.
| Assembly | Types | Members | Status |
|---|---:|---:|---|
| `LibreMetaverse` | 2,711 | 27,281 | pending milestone issue |
| `LibreMetaverse.Imaging.Abstractions` | 3 | 20 | pending milestone issue |
| `LibreMetaverse.Imaging.Skia` | 1 | 3 | pending milestone issue |
| `LibreMetaverse.LslTools` | 164 | 768 | pending milestone issue |
| `LibreMetaverse.PrimMesher` | 17 | 207 | pending milestone issue |
| `LibreMetaverse.RLV` | 28 | 499 | pending milestone issue |
| `LibreMetaverse.Rendering.MeshFoundry` | 1 | 14 | pending milestone issue |
| `LibreMetaverse.Rendering.Simple` | 1 | 6 | pending milestone issue |
| `LibreMetaverse.StructuredData` | 16 | 295 | callable failure-only shim |
| `LibreMetaverse.Types` | 45 | 942 | callable failure-only shim |
| `LibreMetaverse.Utilities` | 3 | 13 | pending milestone issue |
| `LibreMetaverse.Voice.Vivox` | 64 | 531 | pending milestone issue |
| `LibreMetaverse.Voice.WebRTC` | 12 | 210 | pending milestone issue |
Current callable coverage: **61 types / 1,237 members**.