cetio/godwit
GitHub: cetio/godwit
Godwit 是一个 D 语言的 CoreCLR 互操作库,通过直接转换 .NET 运行时内部结构实现 D 与 C# 的无封送交互。
Stars: 14 | Forks: 0
# Godwit
[](https://github.com/cetio/godwit/releases/)
[](#license)
[](https://)
D-CoreCLR 互操作库,旨在允许 D 语言和其他绑定语言与 C# 程序进行交互,而无需在语言之间进行任何显式的来回转换。这是通过将 CoreCLR 结构和代码直接转换为 D 来实现的。
就目前而言,由于不知道 `AppDomain` 在内存中的位置这一限制,交互语言必须由 C# 进行初始化。
### 等价关系
`PropertyInfo` 实际上是 `MethodBase`,`EventInfo` 实际上似乎是 `FieldInfo`,`ParameterInfo` 和返回信息是签名(`PCCOR_SIGNATURE`)的一部分。
| C# | Godwit |
-----|--------|
| `AppDomain` | `godwit.appdomain.AppDomain` |
| `Assembly` | `godwit.assembly.Assembly` |
| `AssemblyName` | `godwit.assemblyidentity.AssemblyIdentity` |
| `Module` | `godwit.ceeload.Module` |
| `Type` | `godwit.methodtable.MethodTable` |
| `TypeInfo` | `godwit.methodtable.MethodTable` |
| `TypeHandle` | `godwit.typehandle.TypeHandle` |
| `MemberInfo` | TBD |
| `ParameterInfo` | TBD |
| `EventInfo` | TBD |
| `MethodBase` | `godwit.method.*MethodDesc` |
| `MethodBody` | `godwit.method.*MethodDesc` |
| `MethodInfo` | `godwit.method.*MethodDesc` |
| `ConstructorInfo` | `godwit.method.*MethodDesc` |
| `PropertyInfo` | `godwit.method.*MethodDesc` |
| `RuntimeMethodHandle` | `godwit.method.*MethodDesc` |
| `Delegate` | `godwit.stub.Stub` TBD |
| `Action` | `godwit.stub.Stub` TBD |
| `Func` | `godwit.stub.Stub` TBD |
| `FieldInfo` | `godwit.field.FieldDesc` |
| `RuntimeFieldHandle` | `godwit.field.FieldDesc` |
| `Object` | `godwit.objects.BaseObject` |
| `Object*` | `godwit.objects.ObjectHandle` TBD |
| `ObjectHandle->Missing` | `godwit.appdomain.AppDomain.hndMissing` |
| `Exception` | `godwit.clrex.EXException` |
| `ILGenerator` | `godwit.cil` |
| `IL↑` | `godwit.corhdr` `godwit.cor` |
| `IL↓` | `godwit.cil` |
| Godwit | C# |
|--------|----|
| `AppDomain*` | TBD (不可能?) |
| `Assembly*` | `*(nint*)&RuntimeAssembly` |
| `Module*` | `**(nint**)&Module.MethodHandle` |
| `MethodTable*` | `Type.TypeHandle.Value` |
| `MethodDesc*` | `MethodBase.MethodHandle.Value` |
| `FieldDesc*` | `FieldInfo.FieldHandle.Value` |
| `PCCOR_SIGNATURE` | `Signature.m_sig` |
## 用法
TBD
## 文档
TBD
部分文件,主要是那些并非从 CoreCLR 转换而来的文件,已经为其编写了 ddocs 文档,但完整的文档还远未完成。
## 贡献
非常感谢您的贡献。Godwit 是一个庞大的项目,仅靠我个人来维护它一直非常繁琐。
您可以通过任何您想要的方式来做出贡献,最好是提交 pull request,但如果您最近刚穿越到这个时间线,且尚未适应现代技术,将 diff 传真给我也是一个可行的选择。
### 问题
如果您发现任何 bug 或有任何建议,请提交一个 issue。Bug 将是我的首要处理任务,但我会确保将任何合理的建议放入我的 TODO 列表中,并将会逐一处理。
## 许可证
Godwit 采用 [AGPL-3](/LICENSE.txt) 许可证。
标签:CoreCLR, D语言, 互操作, 多人体追踪, 底层开发, 运行时