本文为七种语言对比学习的第十四篇:标准库依赖关系。
编程语言的标准库往往存在依赖关系,但一定有些库是自满足而不引入其他库的,本文试图探究各库的依赖关系,看看到底一门语言的核心库是如何构建起来的。
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的库
依赖关系图