STEEMIT的官方github最近每次发布新版本都至少同时发布两个。
(图源 :pexels.com)
比如最近一次HardFork的版本就分别为:
- Steem 0.22.0
- Steem 0.22.0 (No MIRA)
MIRA我知道是啥,其实是Multi Index RocksDB Adapter
首字母的缩写,简单来讲就是通过数据库技术,降低节点的内存等开销。
DENABLE_MIRA = [OFF/ON] 选项
那么这两套代码是完全不同的东西嘛?显然是不可能的,其实就是通过一些宏定义开关或者选择一些功能,比如这段代码:
那么既然如此,steem直接发布一套代码,然后提供一个编译选项让大家自己设定是否开启就可以了啊?事实上steem的代码中确实可以设置这样的选型,那就是:
DENABLE_MIRA = [OFF/ON]
比如我们想编译带MIRA支持的程序,那么就要传入DENABLE_MIRA = ON
;反之,传入DENABLE_MIRA = OFF
或者不传任何参数即可,因为OFF是默认选项,这个选项所作的工作如下:
简单来讲就是在编译过程中,给编译程序传入DENABLE_MIRA
,其实就是相当于代码中加入了如下语句:
#define ENABLE_MIRA
v0.22.0 v0.22.0-no-mira 版本区别
好了,我们知道了MIRA是什么,也知道了开启MIRA支持的神奇选项(DENABLE_MIRA = [OFF/ON]
),那么问题来了,STEEMIT发布的两套源代码到底有什么区别?
莫非是一套里边默认启用了MIRA(DENABLE_MIRA = ON
),另一套里边默认关闭的了MIRA(DENABLE_MIRA = OFF
),我一直是这么认为的,不过不确认一下不放心啊!
如何确认呢?只需使用如下命令即可:
git diff v0.22.0 v0.22.0-no-mira --stat
返回信息如下:
原来就差了一个文件啊,也就是下图中箭头指向处文件:
我们可以直接用如下命令查看具体差异:
git diff v0.22.0 v0.22.0-no-mira -- Dockerfile
返回如下:
也就是说v0.22.0的Dockerfile中启用了MIRA(DENABLE_MIRA = ON
),而v0.22.0-no-mira中默认关闭的了MIRA(DENABLE_MIRA = OFF
)
不过好像对不使用Docker的用户没啥影响,那些用Docker的用户,要好好研究喽,毕竟弄错Mira是否启用,可能会导致长时间的Replay啊,哈哈。
总算搞懂了困扰已久的问题。
相关链接
https://steemit.com/~witnesses type in
oflyhigh
and click VOTE
Vote @oflyhigh via Steemconnect
Thank you!
This page is synchronized from the post: ‘Steem的源码中普通版本和和不带(No MIRA)字样版本的区别?’