Pagpagawas sa Go programming language 1.18

Gipresentar ang pagpagawas sa Go 1.18 programming language, nga gipalambo sa Google uban ang pag-apil sa komunidad ingon usa ka hybrid nga solusyon nga naghiusa sa taas nga pasundayag sa mga natipon nga mga sinultian nga adunay mga bentaha sa mga sinultian sa script ingon kadali sa pagsulat sa code. , katulin sa pag-uswag ug pagpanalipod sa sayup. Ang code sa proyekto giapod-apod ubos sa lisensya sa BSD.

Ang syntax ni Go gibase sa pamilyar nga mga elemento sa C nga pinulongan nga adunay pipila ka mga paghulam gikan sa Python nga pinulongan. Ang pinulongan mubo ra, apan ang code sayon ​​basahon ug sabton. Ang Go code gihugpong ngadto sa stand-alone binary executable files nga modagan sa lumad nga walay paggamit sa usa ka virtual machine (profiling, debugging modules, ug uban pang runtime problem detection subsystems gi-integrate isip runtime components), nga nagtugot sa performance nga ikatandi sa C programs.

Ang proyekto sa sinugdan naugmad uban ang usa ka mata sa multi-threaded programming ug episyente nga operasyon sa multi-core nga mga sistema, lakip ang paghatag og operator-level nga paagi alang sa pag-organisar sa parallel computing ug interaksyon tali sa parallel-executed nga mga pamaagi. Naghatag usab ang lengguwahe og built-in nga proteksyon batok sa sobra nga gigahin nga mga bloke sa panumduman ug naghatag katakus sa paggamit sa usa ka tigkolekta sa basura.

Ang bag-ong bersyon nagdugang suporta alang sa mga generic nga mga gimbuhaton ug mga tipo (generics), uban sa tabang nga ang usa ka developer mahimong maghubit ug mogamit sa mga gimbuhaton nga gidisenyo aron magtrabaho sa daghang mga tipo sa usa ka higayon. Posible usab nga gamiton ang mga interface aron makamugna ang mga hiniusa nga tipo nga adunay daghang mga tipo sa datos. Ang suporta alang sa generics gipatuman nga walay paglapas sa atrasado nga pagkaangay sa kasamtangan nga code. // Sum set values, naglihok alang sa int64 ug float64 nga mga matang function SumIntsOrFloats[K comparable, V int64 | float64](m mapa[K]V) V {var s V para sa _, v := range m {s += v } return s } // Laing opsyon nga adunay generic type definition: type Number interface {int64 | float64 } function SumNumbers[K comparable, V Number](m map[K]V) V { var s V for _, v := range m { s += v } return s }

Uban pang mga kalamboan:

  • Ang mga utility para sa fuzzing code testing gisagol sa standard toolkit. Atol sa fuzzing testing, ang usa ka stream sa tanan nga posible nga random nga kombinasyon sa input data namugna ug posible nga mga kapakyasan sa panahon sa ilang pagproseso natala. Kung ang usa ka han-ay nahagsa o ​​dili motakdo sa gipaabot nga tubag, nan kini nga kinaiya lagmit nga nagpakita sa usa ka bug o kahuyang.
  • Gidugang nga suporta alang sa multi-modular nga mga workspace, nga nagtugot kanimo sa pagpatuman sa mga command sa daghang mga module sa usa ka higayon, nga nagtugot kanimo sa dungan nga paghimo ug pagpadagan sa code sa daghang mga module.
  • Mahinungdanon nga pag-optimize sa pasundayag ang gihimo alang sa mga sistema nga gibase sa mga processor sa Apple M1, ARM64 ug PowerPC64. Gipaandar ang abilidad sa paggamit sa mga rehistro imbes sa stack aron ipasa ang mga argumento sa mga gimbuhaton ug ibalik ang resulta. Gipauswag ang inline nga pag-unrolling sa mga loop sa compiler. Ang pagsusi sa tipo sa compiler hingpit nga gidesinyo pag-usab. Ang ubang mga pagsulay nagpakita sa usa ka 20% nga pagtaas sa pasundayag sa code kumpara sa miaging pagpagawas, apan ang pag-compile mismo nagkinahanglan ug mga 15% nga mas dugay.
  • Sa runtime, ang pagka-epektibo sa pagbalik sa libre nga panumduman sa operating system nadugangan ug ang operasyon sa tigkolekta sa basura gipauswag, ang pamatasan nga nahimo’g mas matag-an.
  • Bag-ong mga pakete nga net/netip ug debug/buildinfo gidugang sa standard library. Ang suporta alang sa TLS 1.0 ug 1.1 gi-disable pinaagi sa default sa code sa kliyente. Ang crypto/x509 module mihunong sa pagproseso sa mga sertipiko nga gipirmahan gamit ang SHA-1 hash.
  • Ang mga kinahanglanon alang sa kalikopan sa Linux gipataas; aron magtrabaho, kinahanglan nimo karon nga adunay Linux kernel nga labing menos bersyon 2.6.32. Sa sunod nga pagpagawas, ang susama nga mga pagbag-o gilauman alang sa FreeBSD (ang suporta alang sa FreeBSD 11.x nga sanga ihunong) ug labing menos ang FreeBSD 12.2 kinahanglan nga magtrabaho.

Source: opennet.ru

Idugang sa usa ka comment