43

Scala 似乎也有一个 .NET 实现。我想知道它是否是一个完整的实现,没有松散的结局,或者只是一个展示的东西。

这很重要,因为我们要开发的应用程序除了 Web 上的主要实现外,还应该有 Windows GUI。拥有一种可以在两个实现之间移植核心代码的语言看起来像是一个交易撮合者。

有人从事过 Scala 的 .NET 实现吗?任何反馈?

4

8 回答 8

27

我听说 .NET 方面已经获得了新的资金,但目前距离“生产就绪”甚至“可用”还有很大的距离。很长一段时间以来,还没有一个有意义地触及 .NET 方面的签入。

2010 年 1 月 15 日更新:发给 Scala 列表之一的最新消息。

来自:卢卡斯·里茨

2010 年 1 月 15 日星期五 03:18,Naftoli Gugenheim 写道:

不确定这是否是您要查找的内容,但
根据其文档/网站,我认为 H2 可以在 .NET 上运行。
如果您正在寻找用 Scala 编程的数据库引擎,我个人
还没有听说过,但这并不意味着什么。
如果您的意思是 ORM 等,则有一些。
您甚至可以在非 Lift 应用程序中使用 Lift Mapper (仅包括 webkit 和 util jars IIRC)。
.NET 上 Scala 的状态如何?

我们正在努力引导编译器,并在此过程中修复 MSIL-Backend-Bugs。EPFL 将提供在 .NET 上运行的编译器(至少在第一个版本中使用 IKVM.OpenJDK.Core.dll)

现在,我们有一个在 JVM 上运行的交叉编译器,以及在 .NET 上运行的 scala-library.jar 的简化版本。

对于某些部分,我们将依赖社区(例如将更多的 scala-library.jar 移植到 .NET)。

卢卡斯

于 2009-04-13T14:56:35.473 回答
12

Martin Odersky 在这次SE Radio 采访(2011 年 1 月)中说:

我不想给你一个预计的到达时间,但应该是今年,包括视觉工作室支持。

他在第 15 分钟开始谈论 .NET。

于 2011-02-16T13:02:50.973 回答
9

维基百科条目声称:

.NET 平台存在替代实现,但尚未保持最新。(需要引用)

常见问题解答的“限制”部分有以下条目:

Scala 可以在 .Net 上运行吗?

是的,当前的 Scala 发行版可以为 .Net 平台编译程序。.Net 平台与 Java 有许多相似之处,但也有许多特性,因此维护此端口是一项复杂的任务。在这个阶段,MSIL/.Net 版本的 Scala 几乎实现了整个 Scala 语言和大多数标准库。一个重要的限制是结构类型还不能在 .NET 上工作。使用特别复杂的异常处理程序时可能仍然存在问题。由于 .Net 的特殊性,少数库不可用,并且不支持与其他 .Net 语言的交互。有关更多详细信息,请参阅此(可能有点过时)文档页面。

将Scala 与 .NET 结合使用的指南谈到了 1.4 版,该版本现在已经相当老了。另一方面,文档似乎是在 2008 年才编写的,包括“.NET 上的 Scala:怪癖”页面,这听起来很重要。

自己没有任何经验,听起来支持是一瘸一拐的,但.NET 端口并不是真正的一等公民。.NET 上的 Scala 没有“嗡嗡声”这一事实(与 Java 版本相比)也不令人鼓舞。这听起来不像是我现在想用于商业软件的东西。当然,它可能很好,只是没有很好的营销。如果你真的热衷于这个想法,我会在邮件列表中询问。

为什么不将Eclipse RCP用于基于 Java/Scala 的 Windows 客户端,或者将 .NET 用于 Web 应用程序?

于 2009-04-13T07:03:53.130 回答
4

在 2011 年 7 月 18 日对 scala-lang.org 的采访中:

我现在可以在 .Net 上运行 Scala 程序吗?
米格尔
简单的答案是肯定的,但有一些限制将在秋季取消。

链接:inteview
链接:二进制文件

于 2011-07-18T11:11:33.030 回答
3

目前 - 不,不是真的,这很遗憾,因为它是一种非常有趣的语言。

“Hello world”类型的程序,很好——甚至是花哨的技巧,比如编写一个简单的堆栈,其中一小段 Python(Jython 或 IronPython 下的相同代码)驱动同一个 Scala。

任何适度的负担——scalac-net 编译可以并且将会抛出,即使代码不使用 scala 命名空间之外的任何东西,并且在 JVM 上构建并通过一组相当详尽的单元测试。即使是相当简单的程序集(即使使用 .net 1.0 构建,以匹配 scala-msil 包中包含的 mscorlib 的低规格),它也可能会阻碍构建。

我的“适度征税”测试集包括以下实现,旨在弥补 .net 上当前的不足

  • BigInteger 的 C# 库的 Scala 端口(来自 codeplex,带有我自己的单元测试)
  • scala.actors 中 Java 代码的 Scala 端口
于 2009-06-07T23:32:36.787 回答
2

从 4 月的 Scala Days 2010 开始,Miguel Garcia 就在 Scala.NET 上工作。我相信他正在开发一个视觉工作室插件,我不确定事情进展如何,但是你可以在这里找到他工作的证据:

http://lamp.epfl.ch/~magarcia/ScalaCompilerCornerReloaded/ http://www.sts.tu-harburg.de/people/mi.garcia/ScalaCompilerCorner/MixedSourceScalaCSharp.pdf http://www.sts.tu- harburg.de/people/mi.garcia/ScalaCompilerCorner/ScalaNetLearnsLINQTricks.pdf

Miguel 现在在 EPFL 做他的博士后:http: //lamp.epfl.ch/~magarcia/

保罗(即席)的回答可能有更多最新信息,但如果我很好奇,我可能会直接问米格尔。

于 2010-08-11T11:42:34.627 回答
2

DDJ:有计划的 .NET 版本的 Scala 吗?

莫:是的。我们在七月宣布了它。我们有一个项目,实际上是由微软资助的,用于构建 .NET 版本的 Scala。我们拥有在 .NET 上自行编译的编译器的第一个引导版本。还有很多工作要做,尤其是在 Visual Studio 集成方面。

采访 Scala 的 Martin Odersky - 2011 年 7 月 14 日

于 2011-07-16T10:11:19.533 回答
0

查看 SVN 存储库,.net 空间中肯定有一些活动正在进行。里面有2.7.x一个dotnet-library目录,但是那个目录2.8.xtrunk. 相反,最近4 个月前 rytzmsil有一个目录发生了一些不平凡的事情。

所有可用的文档似乎都已经过时了,但也许值得向主要贡献者之一询问当前状态是什么。请注意,即兴的(一年多前已经回答过这个问题)似乎是其中之一。

于 2010-06-20T22:18:09.763 回答