我真的很喜欢livetalk环境(尽管我只用Pharo进行了一些实验),但有一件事我为什么不能真正用它来进行日常开发。似乎无法从smalltalk系统创建本机独立可执行文件。本机独立可执行文件意味着创建单个可执行文件(Windows上的PE,Linux上的ELF,macosx上的Mach-O),用户可以通过双击它来运行,而无需安装任何其他执行环境。我错过了什么,实际上可以使用smalltalk创建本机独立可执行文件吗?
如果我们特别谈论Pharo。我知道Pharo的环境包括高效的及时编译器(从Pharo的VM字节码生成真正的本机代码),我知道可以通过剪切我的应用程序赢得的代码来删除VM映像永远不需要。所以基本上我们已经拥有了几乎所有东西(我猜的链接器除外)能够创建本机独立可执行文件。如果我们在图像中放置所有代码生成内容(对于所有目标处理器),则交叉编译也不应该成为问题。
我知道在smalltalk世界中,将整个VM映像与运行时环境分开交付被认为是一件好事,因此用户可以破解他/她正在使用的软件。但是,我没有看到任何充分的理由说明为什么不能将您的smalltalk软件作为完全编译的本机独立可执行文件提供。你能解释一下为什么在smalltalk世界里做这件事并不常见吗?是否有任何良好的smalltalk实现允许这样做?
总结这一切。我梦想有一个实时的smalltalk环境,在那里我可以开发和测试我的软件,但随后(当软件实际上已准备好交付时)将它交叉编译为我的单一开发机器中的windows,linux和macosx的本机可执行文件。那真是太棒了。
答案 0 :(得分:6)
不是Pharo,而是原生的,编译的(通过ANSI C或其自己的JIT)smalltalk [应用程序](能够加载预编译的DLL或[JIT-]按需编译代码):
<强>的Smalltalk / X 强>
http://www.exept.de/en/products/smalltalk-x.html
或(非官方增强开发版):
Smalltalk / X JV分支 - https://swing.fit.cvut.cz/projects/stx-jv/
几乎完全开源。除librun(核心运行时 - 内存管理,JIT等)和stc(smalltalk-to-c)编译器之外的所有东西都已经是开源的。 Claus Gittinger / Exept还承诺/确认如果他们停止进一步开发,他们会释放剩余来源(AFAIK,这些部分仅因现有客户的担忧而关闭)。
我强烈建议大家查看它,这是一个奇迹,这么棒的实现是如此鲜为人知。
答案 1 :(得分:4)
对于像python,java等其他语言来说,事情并不漂亮,即使应用程序较小,它们仍然依赖于这些库,无论你的应用程序是否使用它们,它们都会出现需要安装的大型库。
Pharo和Smalltalk一般情况不同,因为他们渴望自己成为虚拟操作系统。与真实操作系统的不同之处在于,用户可以通过简单的方式对小型图像进行黑客攻击。
假设您可以重命名pharo可执行文件,更改其图标,禁用Pharo中的IDE工具,这样您的用户只能看到您应用的GUI。像Geo和Phratch博士这样的应用程序已经这样做了。
将Pharo项目编译为本机可执行文件不会有太大区别,因为a)Pharo已经编译为本机可执行文件b)您不需要这样做,因为Pharo已经是独立的,甚至不需要安装。
我的建议是不要担心那些无关紧要的事情,并喜欢学习Pharo有多么强大和有趣的事情。
答案 2 :(得分:1)
问题在于,在这种情况下,Pharo无法与任何本机编译器(如C,C ++或其他编译器)进行比较,而更像是java,python,ruby和其他具有虚拟机的语言。
在这些语言中,您可以生产罐子,鸡蛋或宝石来分发您的项目。
在Pharo,您可以制作一个&#34;制作图像&#34;您已经提到的以下技术。但是没有什么可以阻止你提供包括PharoVM在内的人工制品(毕竟它是2米大),你可以准备你的应用程序来检测和打开你的生产图像(无需索取)。
答案 3 :(得分:1)
Smalltalk与其他语言一样实用:不是很多。一旦创建了更大的应用程序,就会开始依赖于正在安装的其他库/应用程序。如果使用应用程序静态编译它们,您现在已经创建了一个更大的应用程序,下载时间更长,并且至少在其中一个依赖项中发现安全问题时需要更新。如果没有,您的应用程序不再双击可启动。
解决方案有两个方向:Web应用程序,安装程序和程序包管理器。
Squeak仍然保持其一键式安装程序,允许同一组文件在Windows,Mac和Linux上运行。 Pharo曾经也有这种情况,但转向拥有单独的构建。需求并不是很大,以至于一键式构建已经恢复。大多数人认为能够在usb-stick上携带跨平台环境是有用的。随着更多所需的库将预先安装在这些平台上,随着向64位分支vm的迁移,依赖性问题将会减少。
答案 4 :(得分:1)
Dolphin Smalltalk可以为Windows生成独立的.exe。
这是Pro版本的一个关键功能。
答案 5 :(得分:0)
你的梦想自80年代中期以来一直存在,它被称为Smalltalk / X.