为什么golang选择syscall而不是libc

Hui*_*Tai 5 libc system-calls go

Go将所有syscall-s包装在syscall包中,就像libc正确理解它们一样。

我研究了几种语言,

  • Haskell在编译器中使用libc,并且库中也通常使用它,尽管有一些库为用户封装了syscall。

  • Java和几乎所有的JVM语言都选择libc。

无需提及脚本语言,例如lua,ruby或python,它们需要可移植,因此它们需要libc作为POSIX的实现。

我最近没有使用过锈,但是也有人说过使用libc也是锈。

因此,为什么golang首先决定实施syscall软件包。它不是可移植的,需要花费更多的人才能移植到每个内核,甚至是同一内核的每个主要版本。