@
TangMonk #37
英语不好,就别跟人家玩咬文嚼字的游戏,内容不理解,连约定俗成的概念都不了解,就跟人玩文字游戏,没意思。
任何程序,只要能 run,那就有 runtime 概念。具体 runtime 是啥意思,字面意思都很容易理解,这要都理解不了,那还是别吃这碗饭了。
通常意义,就像一楼说的某种语言需要 runtime,指的是需要外部 runtime libary,
对于传统.net ,
就是.net framework, 对于 msvc 的高版本,就是 vc2xxx runtime redist,对于 java,就是 jre。
golang 的所有单一输出,默认都是静态编译的纯本地机器码,不需要任何外部 runtime libary 支持。
而.net core,
核心应该还是.net 的那一套,只是不需要显式安装 runtime libary,在生成对应平台目标程序时,在程序内内嵌了一个 runtime,然后用这个 runtime 去执行原始程序翻译成的中间码。这样由于一般程序调用的库有限,可以把最基础的热门基础 runtime 库用目标平台机器码写好无论是否需要直接复制进二进制,然后一些非热门库根据代码是否使用,采用可选扩展形式,封装进程序,相当于每个发布的程序都带一个不全功能的解释器来压缩发布文件体积,
核心还是.net 那一套,只是为了不需要用户麻烦的单独安装 framework 还有坑爹的不同版本 framework 乱套问题。顺带为了跟某些潜在竞争对手做竞争,扩展了一直强调的跨平台。