【问题标题】:Using the new source provided by microsoft would it be possible to create a variant of the CLR?使用 microsoft 提供的新源是否可以创建 CLR 的变体?
【发布时间】:2015-06-20 18:49:38
【问题描述】:

也就是说,如果有这样的想法,他们是否可以使用最近在 GitHub 上发布的 CoreCLR 和 .NET Framework 的其他部分的源来创建自己的基于 CLR 的运行时?就像改变 CIL 的结构(例如添加操作码),而不是为产生它的语言编写新的编译器。

提供的源代码是否包含创建官方 CLR 副本所需的所有代码,如果是,重新分发修改后的版本是否合法?

【问题讨论】:

  • 有人能解释为什么这是一个糟糕的问题,而不是投票吗?是否被视为离题?
  • 如果您查看图表here,您会发现他们发布了他们想要发布开源库的源代码的 56%。所以仍然有 44% 的缺失。请注意,他们不会发布 WPF、WinForms 和其他部分。缺少的“东西”(现在,但它们应该会出现)例如 System.GlobalizationSystem.Threading.ThreadSystem.Threading.ThreadPoolSystem.Reflection.Emit...
  • @xanatos 如果我没记错的话,那是 CoreFX 的进展,.NET 库,而不是 CoreCLR,.NET 运行时本身。
  • 没有 .NET 库的 .NET 运行时 (CoreCLR) 毫无用处...除非您想尝试重用 Microsoft 库...不确定是否可以使用 CoreCLR + "官方”微软程序集
  • 也许您正在寻找的是dnx .NET 执行环境包含引导和运行应用程序所需的代码。这包括编译系统、SDK 工具和本机 CLR 主机。 有一个关于 DNX 是什么的问题:stackoverflow.com/q/30374725/613130

标签: .net clr


【解决方案1】:

CoreCLR 有一个 MIT License 和一个 patent promise,所以应该可以用它来构建你的“竞争”CLR。

专利承诺不是无限的,但是:

微软公司及其附属公司(“微软”)承诺不主张 任何针对您制造、使用、销售、提供销售的 .NET 专利, 导入或分发涵盖代码,作为 .NET 运行时或 作为设计为在 .NET 运行时上运行的任何应用程序的一部分。

对于 .NET 运行时可以是什么有一些限制(您的实现必须包含 .NET 运行时所需的所有功能,以使其与 ECMA-335 兼容......所以您可以添加部分,但您可以) t 删除一些碎片)。

请注意,DNX 可能与您需要的更相似:它使用 CoreCLR 并包含编译器和其他部分。它是:

DNX(一种 .NET 执行环境)包含引导和运行应用程序所需的代码,包括编译系统、SDK 工具和本机 CLR 主机。

DNX 在Apache license 下发布。 Apache 许可在许可中包含一项专利授权。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-16
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 2010-12-20
    • 1970-01-01
    • 2019-12-22
    相关资源
    最近更新 更多