Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用smalltalk的本机独立可执行文件?_Smalltalk_Pharo - Fatal编程技术网

使用smalltalk的本机独立可执行文件?

使用smalltalk的本机独立可执行文件?,smalltalk,pharo,Smalltalk,Pharo,我真的很喜欢live smalltalk环境(虽然我只在Pharo上做了一点实验),但有一件事我不能真正将它用于日常开发。似乎不可能从smalltalk系统创建本机独立可执行文件。本机独立可执行文件意味着创建单个可执行文件(windows上的PE、linux上的ELF、macosx上的Mach-O),用户可以双击该文件运行,而无需安装任何其他执行环境。我是否遗漏了一些东西,事实上可以使用smalltalk创建本机独立可执行文件 如果我们专门谈论法罗。我知道Pharo的环境包括高效的即时编译器(从

我真的很喜欢live smalltalk环境(虽然我只在Pharo上做了一点实验),但有一件事我不能真正将它用于日常开发。似乎不可能从smalltalk系统创建本机独立可执行文件。本机独立可执行文件意味着创建单个可执行文件(windows上的PE、linux上的ELF、macosx上的Mach-O),用户可以双击该文件运行,而无需安装任何其他执行环境。我是否遗漏了一些东西,事实上可以使用smalltalk创建本机独立可执行文件

如果我们专门谈论法罗。我知道Pharo的环境包括高效的即时编译器(从Pharo的VM字节码生成真正的本机代码),我知道可以通过剪切我的应用程序永远不需要的代码来剥离VM映像。因此,基本上我们已经拥有了几乎所有能够创建本机独立可执行文件的东西(我想除了链接器)。如果我们将所有代码生成的东西(针对所有目标处理器)都放在映像中,交叉编译也不应该成为问题

我知道在smalltalk世界中,将整个VM映像与运行时环境分开交付被认为是一件好事,这样用户就可以侵入他/她正在使用的软件。然而,我不认为有什么好的理由不能将smalltalk软件作为完全编译的本机独立可执行文件交付。你能解释一下为什么在smalltalk的世界里这不是一件平常的事吗?有没有什么好的smalltalk实现允许这样做


总而言之。我梦想有一个活生生的smalltalk环境,在那里我可以开发和测试我的软件,但是(当软件实际准备好交付时)从我的单一开发机器将其交叉编译成windows、linux和macosx的本机可执行文件。这个问题真的很棒。< /P> < P>问题是,在这种情况下,法罗不能与任何像C、C++或其他任何编译器一样,而是更像java、python、Ruby和其他虚拟机周围的语言。p> 在这些语言中,您可以制作罐子、鸡蛋或宝石来分发您的项目


在Pharo中,您按照前面提到的技术生成“产品图像”。但是,没有什么可以阻止你交付一件艺术品,包括PharoVM(毕竟它有2米大),你可以准备你的应用程序来检测和打开你的产品图像(而不必要求它)。

讽刺的是,有一件事需要预加载exe。你的操作系统。请看,C/C++可以如此轻巧,因为您的操作系统的运行方式已经相当于映像对大量预加载库的运行方式。只要启动一个简单的计算器,就需要浪费几GB的内存。您的操作系统是C/C++库的集合

与python、java等其他语言相比,情况并不是更好,即使应用程序更小,它们仍然依赖于这个libs,而且它们将是相当大的库,无论您的应用程序是否使用它们,都需要安装

Pharo和Smalltalk通常是不同的情况,因为他们渴望自己成为一个虚拟操作系统。与真实操作系统不同的是,smalltalk映像被用户以简单的方式进行黑客攻击

表示您可以重命名pharo可执行文件,更改其图标,禁用pharo内的IDE工具,以便用户只看到应用程序的GUI。像Dr.Geo和Phratch这样的应用程序已经做到了这一点

将Pharo项目编译为本机可执行文件不会有太大区别,因为a)Pharo已经编译为本机可执行文件b)您不需要这样做,因为Pharo已经是独立的,甚至不需要安装


我的建议是,不要再担心那些无关紧要的事情,享受学习法罗的力量和乐趣吧

Smalltalk和其他语言一样实用:不太实用。一旦您创建了一个稍大一些的应用程序,您就开始依赖于正在安装的其他库/应用程序。如果您使用应用程序静态编译它们,那么现在您已经创建了一个更大的应用程序,需要更长的时间下载,并且至少在其中一个依赖项中发现安全问题时需要更新。如果不是,则应用程序不再是双击startable

解决方案有两个方向:web应用程序、安装程序和包管理器


Squeak仍然保留其一键式安装程序,允许相同的文件集在windows、mac和linux上工作。Pharo以前也有这样的版本,但后来改用了单独的版本。需求并没有如此之大,一键式构建已经恢复。人们通常认为,能够在U盘上携带跨平台环境非常有用。随着迁移到64位spur vm,依赖性问题将减少,因为更多需要的库将预装在这些平台上

自80年代中期以来,您的梦想就一直存在,它被称为Smalltalk/X。

不是Pharo,而是本地编译(通过ANSI C或其自己的JIT)Smalltalk[应用程序](能够根据需要加载预编译DLL或[JIT-]编译代码):

Smalltalk/X

或(非官方增强开发版本):

Smalltalk/X合资分公司-

几乎完全开源。除了librun(核心运行时-内存管理、JIT等)和stc(smalltalk-to-c)编译器之外,其他一切都已经是开源的。Claus Gittinger/Exept还承诺/确认,如果停止进一步开发,他们将释放剩余资源(AFAIK,这些部分仅因现有客户的担忧而关闭)


我强烈建议每个人都去看看它,这是一个奇迹,如此伟大的实现如此鲜为人知。

你也可以去Object Arts看看Dolphin

这是windows onl