本文为七种语言对比学习的第十四篇:标准库依赖关系。

编程语言的标准库往往存在依赖关系,但一定有些库是自满足而不引入其他库的,本文试图探究各库的依赖关系,看看到底一门语言的核心库是如何构建起来的。

C

C的头文件依赖关系图。(箭头表示引用该库文件)



可见,最底层为features, bits, stddef, sys等库文件,这些库一定和硬件紧密相关。

C++

C++的头文件依赖关系图。



最底层也是bits,features 等库文件,毕竟是C 的扩展,所以底层依赖一样很正常。

Java

Java类库文件依赖关系图。



Java 最底层依赖为 base,这也是它叫 base 的原因。

Python

Python的模块依赖关系图


道理是一样的,都是有个基础,再在之上构建各种库。

Go

Go的包依赖关系图。


一切都建立在 Unsafe 之上,这是编译器内置实现的功能。

Rust

Rust的包依赖关系图关系复杂,但经过分析,可以分层:core -> alloc -> std。core 是核心、alloc 负责内存处理,std 是标准库。

core 里有很多子模块,此处为了区分,在模块前统一加了 core_ 前缀,源码里是没有的。

Dart

Dart的库

依赖关系图