Go 1.18:Generic and Fuzz

錯誤的種類

在講這個之前,先提一下主流語言通常「錯誤檢出」方面通常分為三個階段:

  • 編譯前階段 (pre-compile time)
    • 指的是這個錯誤不需要被編譯即可被檢出
    • 很多語言沒有這東西,他需要language server protocol(LSP)支援,如gopls
    • 很多IDE各語言的賣點就是自己獨到的LSP,但是剛好拿來做利子的C++擁有非常混亂的LSP實作,常常pre-compile time報錯,但是compile下去沒問題,以及反之….主要也是因為C++實在是過於複雜。
  • 編譯階段 (compile time)
    • 指的是這個錯誤在編譯的時候就可以找出來
    • 前兩者也可以並稱為compile time,如果沒有要特別指名LSP提供的功能的話。
  • 執行階段 (runtime)
    • 指的是這個錯誤需要在執行期才會發作

而go是一個滿特殊的語言,他能夠把一些runtime才能檢出的東西藉由gopls以及go vet 做結構性語法檢查下,將錯誤把runtime提前到pre-compile time。

Read more “Go 1.18:Generic and Fuzz”
Leave a comment