Steem的源码中普通版本和和不带(No MIRA)字样版本的区别?

Steem的源码中普通版本和和不带(No MIRA)字样版本的区别?

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啊,哈哈。

总算搞懂了困扰已久的问题。

相关链接


Vote For Me As Witness
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)字样版本的区别?’

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×