为什么是 LLVM?
熟悉 LLVM 的朋友知道,它是 Apple / Microsoft / Google 等巨头的底层工具链基座。
其 IR、中间优化与跨平台后端的能力,使得:
这些“现代编译器必备能力”都能直接复用。
如果易语言也能借助这一套流程,那么传统解释/半编译带来的性能短板,理论上都能补齐。
易语言搭上LLVM的原理性解释
其实论坛有很多易x64的尝试,但是基本上都没有完成最终的革命,但是他们的探索都是充满乐趣的,至少在某一个方面也算完成x64的创举,比如将易语言代码转换为C++,然后在C++端实现x64的编译,还比如对易语言的原生窗口进行转换,转换到其他语言用到的UI库,再继续使用其他语言本身就支持x64的特性进行编译,等等...
很多易友其实对易X64以及支持Unicode编码产生很多疑惑,我觉得在现在AI盛行的时代,这些困惑都能得到消除,那我也就不大谈特谈其中涉及的理论了。
我想告诉各位易友,所有的代码转换从来都不是什么魔法
首先一句话概述这种转换的原理: 这种从一种语言转换到另一种语言的过程在语言工程学上被称作是转译,因此凡是基于转译原理开发的工具,一般称为"转译器"
我知道很多写过代码转换,甚至写过其他中文编程语言的朋友会认为这其实就是"翻译"。但是我想说明的一点就是:"转译"与"翻译"是本质完全不同的两件事
先说"翻译",有一些所谓的中文语言利用的就是"宏孩儿"实现的中文翻译,说白了就是利用宏声明来实现的
再说"转译",论坛应该有不少用户使用过炫语言,大家觉得是简单的"翻译"就能够做到的嘛,很显然是不可能办到的,炫语言是有自定义语法的,使用过的都应该知道
所以转译的原理显而易见,就是将一种编程语言(比如这里说到的炫语言)转换为另一种编程语言(比如炫语言的目标语言就是C++)的过程
所以实现真正的易语言X64的方向很明确
只要实现从易语言到另一种支持x64编译的语言的转译器就可以真正做到易语言的X64
显而易见,C++明显支持x64的编译,Unicode肯定不在话下,Rust呢??当然是可以的啦
那么转换到C++之后呢,是不是要将C++代码编译为exe/dll等产物,而这里就涉及到编译器
炫语言选择的其实就是MSVC编译器工具链,使用过的都知道是需要下载VC环境的
而另一种选择就是使用LLVM-Clang来作为编译器工具链对C++代码进行编译
易语言X64的完整流程(仅供感兴趣的朋友参考)
- 首先是开发一个转译器: 负责将易语言转换到C++
- 接着使用LLVM-Clang将转换后的C++编译为exe(这里就只说exe吧,易用户基本都是这种需求)
- 编译时肯定会报错的,这方面熟悉编译器工具链的朋友肯定都知道
- 最典型的就是未定义: krnln.lib(krnln.obj):error LNK2019: unresolved external symbol
所以别看只有两步,第一步就能卡住很多开发者,因为将易语言的代码风格,库引用,模块解析等等特性,不说完美复刻,就是复刻大部分都很不容易了
更何况即使这两步走完,还需要复刻易语言的官方库甚至是第三方作者编写的支持库,这条路并不是想象的那么简单
现在已经有一个转译器实现刚才说的一切功能(易如云)
最重要的是作者目前已经完成易语言官方支持库的大部分,而且非常活跃
摘自易如云官方论坛描述
- 全面覆盖易语言常用的13个易兼容库(krnln,console,spec,sock,shell,RegEx,internet,iconv,EThread,eAPI,commobj,cncnv,eCompress)
- 还新增 encod,pointer 两个专属库,进一步拓展开发边界
官方论坛描述来一大堆,反正一句话概括就是我上面说的流程,并且选择与炫语言完全不同的后端编译器LLVM-Clang来为易语言X64保驾护航
我希望炫语言的使用者也不要来喷我,我从始至终都没有说MSVC不如LLVM-Clang的话,只是两种不同的编译器后端而已,不要过度解读
最后,任何新工具的成长都离不开开发者的支持与反馈
我希望广大的易友可以去尝试易如云,起码奔着原理去了解它也行,对于那些希望开发一款属于自己的转译器的朋友更应该尝试,因为它走的路基本都是你未来需要走的
我其实比较佩服这个作者的执行力的,因为易如云编译器从0到1,我是见证者
我从一开始就觉得这件事一定能成,但是没想到的是进度会这么快,坦白说作者的编译器功底真的不弱,写过转译器,写过AST转换,写过解释器的朋友都应该知道,底层工具链的构建是非常乏味的,这点我深有体会
摘自易如云官方的邀请: 共建易语言新生态
-
任何新工具的成长都离不开开发者的支持与反馈。虽然易如云的生态尚在建设中,但凭借LLVM带来的性能优势和全面的功能支持,我们有信心与大家共同打造更强大的易语言开发环境。
-
现在就通过以下渠道获取工具并加入我们的交流社群:
-
本产品在封装完易官方库之前会一直免费。