ืฉื—ืจื•ืจ ืฉืคืช ื”ืชื›ื ื•ืช Go 1.16

ืžื•ืฆื’ืช ื”ืฉื—ืจื•ืจ ืฉืœ ืฉืคืช ื”ืชื›ื ื•ืช Go 1.16, ื”ืžืคื•ืชื—ืช ืขืœ ื™ื“ื™ ื’ื•ื’ืœ ื‘ืฉื™ืชื•ืฃ ื”ืงื”ื™ืœื” ื›ืคืชืจื•ืŸ ื”ื™ื‘ืจื™ื“ื™ ื”ืžืฉืœื‘ ืืช ื”ื‘ื™ืฆื•ืขื™ื ื”ื’ื‘ื•ื”ื™ื ืฉืœ ืฉืคื•ืช ื”ื™ื“ื•ืจ ืขื ื™ืชืจื•ื ื•ืช ื›ืืœื” ืฉืœ ืฉืคื•ืช ืกืงืจื™ืคื˜ ื›ืžื• ืงืœื•ืช ื›ืชื™ื‘ืช ืงื•ื“ , ืžื”ื™ืจื•ืช ืคื™ืชื•ื— ื•ื”ื’ื ื” ืขืœ ืฉื’ื™ืื•ืช. ืงื•ื“ ื”ืคืจื•ื™ืงื˜ ืžื•ืคืฅ ืชื—ืช ืจื™ืฉื™ื•ืŸ BSD.

ื”ืชื—ื‘ื™ืจ ืฉืœ Go ืžื‘ื•ืกืก ืขืœ ืืœืžื ื˜ื™ื ืžื•ื›ืจื™ื ืฉืœ ืฉืคืช C ืขื ื›ืžื” ืฉืืœื•ืช ืžืฉืคืช Python. ื”ืฉืคื” ื“ื™ ืชืžืฆื™ืชื™ืช, ืื‘ืœ ื”ืงื•ื“ ืงืœ ืœืงืจื™ืื” ื•ื”ื‘ื ื”. ืงื•ื“ Go ืžืงื•ืคืœ ืœืงื•ื‘ืฆื™ ื”ืคืขืœื” ื‘ื™ื ืืจื™ื™ื ืขืฆืžืื™ื™ื ื”ืคื•ืขืœื™ื ื‘ืื•ืคืŸ ืžืงื•ืจื™ ืœืœื ืฉื™ืžื•ืฉ ื‘ืžื›ื•ื ื” ื•ื™ืจื˜ื•ืืœื™ืช (ืคืจื•ืคื™ืœื™ื, ืžื•ื“ื•ืœื™ ื ื™ืคื•ื™ ื‘ืื’ื™ื ื•ืชืช-ืžืขืจื›ื•ืช ืื—ืจื•ืช ืœื–ื™ื”ื•ื™ ื‘ืขื™ื•ืช ื‘ื–ืžืŸ ืจื™ืฆื” ืžืฉื•ืœื‘ื•ืช ื›ืจื›ื™ื‘ื™ ื–ืžืŸ ืจื™ืฆื”), ืžื” ืฉืžืืคืฉืจ ื‘ื™ืฆื•ืขื™ื ื“ื•ืžื™ื ืœืชื•ื›ื ื™ื•ืช C.

ื”ืคืจื•ื™ืงื˜ ืคื•ืชื— ื‘ืชื—ื™ืœื” ืžืชื•ืš ืขื™ืŸ ืœืชื›ื ื•ืช ืจื‘-ื”ืœื™ื›ื™ ื•ืชืคืขื•ืœ ื™ืขื™ืœ ื‘ืžืขืจื›ื•ืช ืžืจื•ื‘ื•ืช ืœื™ื‘ื•ืช, ื›ื•ืœืœ ืžืชืŸ ืืžืฆืขื™ื ื‘ืจืžืช ื”ืžืคืขื™ืœ ืœืืจื’ื•ืŸ ืžื—ืฉื•ื‘ ืžืงื‘ื™ืœ ื•ืื™ื ื˜ืจืืงืฆื™ื” ื‘ื™ืŸ ืฉื™ื˜ื•ืช ื”ืžื‘ื•ืฆืขื•ืช ื‘ืžืงื‘ื™ืœ. ื”ืฉืคื” ืžืกืคืงืช ื’ื ื”ื’ื ื” ืžื•ื‘ื ื™ืช ืžืคื ื™ ื‘ืœื•ืงื™ ื–ื™ื›ืจื•ืŸ ืฉื”ื•ืงืฆื• ื™ืชืจ ืขืœ ื”ืžื™ื“ื” ื•ืžืกืคืงืช ืืช ื”ื™ื›ื•ืœืช ืœื”ืฉืชืžืฉ ื‘ืื•ืกืฃ ืืฉืคื”.

ืชื›ื•ื ื•ืช ืžืคืชื— ื—ื“ืฉื•ืช ืฉื”ื•ืฆื’ื• ื‘-Go 1.16:

  • ื ื•ืกืคื” ื—ื‘ื™ืœืช ื”ื”ื˜ืžืขื”, ื”ืžืกืคืงืช ื›ืœื™ื ืœื”ื˜ืžืขืช ืงื‘ืฆื™ื ื•ืกืคืจื™ื•ืช ืฉืจื™ืจื•ืชื™ื•ืช ื‘ืชื•ื›ื ื™ืช. ื”ื•ืจืื” ื—ื“ืฉื” "//go:embed" ืžืกื•ืคืงืช ื›ื“ื™ ืœืฆื™ื™ืŸ ืงื‘ืฆื™ื ืฉื™ื•ื˜ืžืขื• ื‘ื–ืžืŸ ื”ื”ื™ื“ื•ืจ. ืœื“ื•ื’ืžื”, ืฆื™ื•ืŸ "//go:embed test.txt" ื‘ื”ืขืจืช ื”ืงื•ื“ ื•ืœืื—ืจ ืžื›ืŸ ื”ื›ืจื–ื” ืขืœ ื”ืžืฉืชื ื” "var f embed.FS" ื™ื•ื‘ื™ืœื• ืœื”ื˜ืžืขื” ืฉืœ ืงื•ื‘ืฅ test.txt ื•ืœื™ื›ื•ืœืช ืœื’ืฉืช ืืœื™ื• ื“ืจืš " f" ืžืชืืจ. ื‘ืื•ืคืŸ ื“ื•ืžื”, ืืชื” ื™ื›ื•ืœ ืœื”ื˜ืžื™ืข ืงื‘ืฆื™ื ื”ื“ืจื•ืฉื™ื ืœืขื‘ื•ื“ื” ืขื ืžืฉืื‘ื™ื ืื• ืขืจื›ื™ื ื‘ื•ื“ื“ื™ื ืžืกื•ื’ ืžืกื•ื™ื, ืœืžืฉืœ, ื›ื“ื™ ืœืงื‘ืœ ืืช ืžืฉืชื ื” ื”ืžื—ืจื•ื–ืช "s" ืžืงื•ื‘ืฅ version.txt, ืืชื” ื™ื›ื•ืœ ืœืฆื™ื™ืŸ: import _ "embed " //go:embed version.txt var s string print (s)
  • ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ืžืขืจื›ืช ื”ืžื•ื“ื•ืœื™ื ื”ื—ื“ืฉื” ืขื ืชืžื™ื›ืช ื’ืจืกืื•ืช ืžืฉื•ืœื‘ืช ื ื“ืจืฉืช ื›ืขืช, ื•ืžื—ืœื™ืคื” ื ื™ื”ื•ืœ ืชืœื•ืช ืžื‘ื•ืกืก GOPATH. ืžืฉืชื ื” ื”ืกื‘ื™ื‘ื” GO111MODULE ืžื•ื’ื“ืจ ื›ืขืช ืœ"ืคื•ืขืœ" ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ื•ื‘ืžืฆื‘ ื”ืžื•ื“ื•ืœื™ื ื ืขืฉื” ืฉื™ืžื•ืฉ ืœืœื ืงืฉืจ ืœื ื•ื›ื—ื•ืช ืฉืœ ืงื•ื‘ืฅ go.mod ื‘ืกืคืจื™ื™ืช ื”ืขื‘ื•ื“ื” ืื• ื”ืื‘. ื‘ืžืฆื‘ ื”ื—ื“ืฉ, ืคืงื•ื“ื•ืช ื‘ื ื™ื™ื” ื›ื’ื•ืŸ "ืขื‘ื•ืจ ืœื‘ื ื•ืช" ื•"ืขื‘ื•ืจ ืœื‘ื“ื™ืงื”" ืื™ื ืŸ ืžืฉื ื•ืช ืืช ื”ืชื•ื›ืŸ ืฉืœ go.mod ื•-go.sum, ื•ื”ืคืงื•ื“ื” "ืขื‘ื•ืจ ืœื”ืชืงื™ืŸ" ืžืขื‘ื“ืช ืืจื’ื•ืžื ื˜ื™ื ืฉืœ ื’ืจืกื” ("ืœืš ืœื”ืชืงื™ืŸ example.com/[ืžื•ื’ืŸ ื‘ื“ื•ื"ืœ]"). ื›ื“ื™ ืœื”ื—ื–ื™ืจ ืืช ื”ื”ืชื ื”ื’ื•ืช ื”ื™ืฉื ื”, โ€‹โ€‹ืฉื ื” ืืช GO111MODULE ืœ"ืื•ื˜ื•ืžื˜ื™". ื™ืฆื•ื™ืŸ ื›ื™ 96% ืžื”ืžืคืชื—ื™ื ื›ื‘ืจ ืขื‘ืจื• ืœืžืขืจื›ืช ื”ืžื•ื“ื•ืœื™ื ื”ื—ื“ืฉื”.
  • ื”ืžืงืฉืจ ืขื‘ืจ ืื•ืคื˜ื™ืžื™ื–ืฆื™ื”. ืขื‘ื•ืจ ืคืจื•ื™ืงื˜ื™ื ื’ื“ื•ืœื™ื, ื”ืคืจื™ืกื” ืžื”ื™ืจื” ื›ืขืช ื‘-20-25% ื•ื“ื•ืจืฉืช ืคื—ื•ืช ื–ื™ื›ืจื•ืŸ ืฉืœ 5-15%.
  • ื”ืžื”ื“ืจ ื”ื•ืกื™ืฃ ืชืžื™ื›ื” ื‘ื”ืจื—ื‘ื” ืžื•ื˜ื‘ืขืช ืฉืœ ืคื•ื ืงืฆื™ื•ืช ืขื ื”ื’ื“ืจื•ืช ืžืงื•ืฆืจื•ืช ืฉืœ ืœื•ืœืื•ืช "ืขื‘ื•ืจ", ืขืจื›ื™ ืฉื™ื˜ื” ื•ืžื‘ื ื™ 'ืžืชื’ ืกื•ื’'.
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืžืขืจื›ื•ืช ืืคืœ ื”ืžืฆื•ื™ื“ื•ืช ื‘ืฉื‘ื‘ Apple M1 ARM ื”ื—ื“ืฉ. ื ื•ืกืคื• ื™ืฆื™ืื•ืช netbsd/arm64 ื•-openbsd/mips64 ืขื ืชืžื™ื›ื” ื‘-NetBSD ื‘-64-bit ARM ื•-OpenBSD ื‘ืžืขืจื›ื•ืช MIPS64. ื ื•ืกืคื” ืชืžื™ื›ื” ื‘-cgo ื•ื‘ืžืฆื‘ "-buildmode=pie" ืœื™ืฆื™ืืช linux/riscv64.
  • ื”ืชืžื™ื›ื” ื‘ืžืฆื‘ ืงื•ืžืคื™ืœืฆื™ื” x87 ื”ื•ืคืกืงื” (GO386=387). ืชืžื™ื›ื” ื‘ืžืขื‘ื“ื™ื ืœืœื ื”ื•ืจืื•ืช SSE2 ื–ืžื™ื ื” ื›ืขืช ื‘ืืžืฆืขื•ืช ืžืฆื‘ ื”ืชื•ื›ื ื” "GO386=softfloat".

ื‘ื ื•ืกืฃ, ืื ื• ื™ื›ื•ืœื™ื ืœืฆื™ื™ืŸ ืืช ื”ื”ืชื—ืœื” ืฉืœ ื‘ื“ื™ืงืช ื’ืจืกืช ื”ื‘ื˜ื ืฉืœ ืฉืคืช Dart 2.12, ืฉื‘ื” ื”ืžืฆื‘ ื”ื‘ื˜ื•ื— ืœืฉื™ืžื•ืฉ ื‘ืขืจืš "Null" (null safety) ื™ื•ืฆื‘, ืžื” ืฉื™ืขื–ื•ืจ ืœืžื ื•ืข ืงืจื™ืกื•ืช ืฉื ื’ืจืžื• ืžื ื™ืกื™ื•ื ื•ืช ืœื”ืฉืชืžืฉ ื‘ืžืฉืชื ื™ื ืฉืœื”ื. ื”ืขืจืš ืื™ื ื• ืžื•ื’ื“ืจ ื•ืžื•ื’ื“ืจ ืœ-"Null". ื”ืžืฆื‘ ืžืจืžื– ืฉืœืžืฉืชื ื™ื ืœื ื™ื”ื™ื• ืขืจื›ื™ null ืืœื ืื ื›ืŸ ื ืงื‘ืข ืœื”ื ื‘ืžืคื•ืจืฉ ืืช ื”ืขืจืš null. ื”ืžืฆื‘ ืžื›ื‘ื“ ื‘ืงืคื“ื ื•ืช ืกื•ื’ื™ ืžืฉืชื ื™ื, ืžื” ืฉืžืืคืฉืจ ืœืžื”ื“ืจ ืœื”ื—ื™ืœ ืื•ืคื˜ื™ืžื™ื–ืฆื™ื•ืช ื ื•ืกืคื•ืช. ืชืื™ืžื•ืช ืกื•ื’ ื ื‘ื“ืงืช ื‘ื–ืžืŸ ื”ื”ื™ื“ื•ืจ, ืœื“ื•ื’ืžื”, ืื ืชื ืกื” ืœื”ืงืฆื•ืช ืืช ื”ืขืจืš "Null" ืœืžืฉืชื ื” ืขื ืกื•ื’ ืฉืื™ื ื• ืžืจืžื– ืขืœ ืžืฆื‘ ืœื ืžื•ื’ื“ืจ, ื›ื’ื•ืŸ "int", ืชื•ืฆื’ ืฉื’ื™ืื”.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”