cetio/godwit

GitHub: cetio/godwit

Godwit 是一个 D 语言的 CoreCLR 互操作库,通过直接转换 .NET 运行时内部结构实现 D 与 C# 的无封送交互。

Stars: 14 | Forks: 0

# Godwit [![GitHub 标签](https://img.shields.io/github/tag/cetio/godwit?include_prereleases=&sort=semver&color=blue)](https://github.com/cetio/godwit/releases/) [![许可证](https://img.shields.io/badge/License-AGPL--3-blue)](#license) [![构建 - Intangible](https://img.shields.io/badge/Build-Intangible-informational)](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语言, 互操作, 多人体追踪, 底层开发, 运行时