Go 1.19 เปิดตัวแล้วและนี่คือข่าวของมัน

เมื่อเร็ว ๆ นี้ ประกาศเปิดตัวเวอร์ชันใหม่ของภาษาการเขียนโปรแกรม «Go 1.19»เวอร์ชันที่ปรับปรุงในรีลีสก่อนหน้าโดยเพิ่มการปรับปรุงต่างๆ และเหนือสิ่งอื่นใด คือการแก้ไขข้อบกพร่อง ของใหม่ที่เราเน้นได้คือการปรับปรุงในการจัดการหน่วยความจำ การปรับปรุงความปลอดภัย และอื่นๆ

สำหรับผู้ที่ยังใหม่กับ Go ควรรู้ว่านี่เป็นภาษาโปรแกรมที่พัฒนาขึ้นโดยการมีส่วนร่วมของชุมชนเป็นโซลูชันไฮบริดที่รวมเอาประสิทธิภาพสูงของภาษาที่คอมไพล์เข้ากับข้อดีเช่นภาษาสคริปต์เช่น ความง่ายในการเขียนโค้ด การพัฒนา และการป้องกันบั๊ก

ไวยากรณ์ของ Go ขึ้นอยู่กับองค์ประกอบปกติของภาษา C ด้วยการยืมบางส่วนจากภาษาไพทอน ภาษาค่อนข้างสั้น แต่โค้ดนั้นอ่านและเข้าใจได้ง่าย

โค้ด Go ถูกคอมไพล์เป็นไฟล์ปฏิบัติการไบนารีที่แยกจากกัน ที่ทำงานโดยกำเนิดโดยไม่ต้องใช้เครื่องเสมือน (การทำโปรไฟล์ การดีบัก และระบบย่อยการแก้ไขปัญหารันไทม์อื่นๆ ถูกสร้างเป็นส่วนประกอบรันไทม์)

คุณสมบัติใหม่หลักของ Go 1.19

ในเวอร์ชันใหม่ของ Go 1.19 ที่นำเสนอนี้ขอเน้นว่า ได้มีการปรับปรุงการรองรับฟังก์ชั่นและประเภททั่วไป เพิ่มในเวอร์ชันล่าสุดด้วยความช่วยเหลือที่นักพัฒนาซอฟต์แวร์สามารถกำหนดและใช้ฟังก์ชันที่ออกแบบมาเพื่อทำงานกับหลายประเภทพร้อมกัน รวมถึงการเพิ่มประสิทธิภาพการทำงานของบางโปรแกรมที่ใช้ generics เพิ่มขึ้น 20%

การเปลี่ยนแปลงอีกอย่างที่โดดเด่นจากเวอร์ชันใหม่นั่นก็คือ เพิ่มการรองรับลิงก์ รายการ และไวยากรณ์ที่ง่ายกว่า เพื่อกำหนดส่วนหัวในความคิดเห็นของเอกสาร ยูทิลิตี้ gofmt ให้การจัดรูปแบบด้วยคุณลักษณะขั้นสูงของความคิดเห็นโดยคำนึงถึงเอกสารประกอบของ API

นอกจากนั้นแล้ว ปรับปรุงโมเดลหน่วยความจำ Go เพื่อให้สอดคล้องกับ C, C++, Java, JavaScript, Rust และ Swift ซึ่งไม่ยอมรับค่าอะตอมที่สม่ำเสมอตามลำดับ มีการแนะนำประเภทใหม่ เช่น atomic.Int64 และ atomic.Pointer[T] ในแพ็คเกจ sync/atomic เพื่อให้ใช้ค่าอะตอมมิกได้ง่ายขึ้น

ในทางกลับกัน ยังมีการกล่าวอีกว่า ตัวรวบรวมขยะมีความสามารถในการกำหนดขีดจำกัดซอฟต์ซึ่งบังคับใช้โดยการจำกัดขนาดของฮีปและส่งคืนหน่วยความจำไปยังระบบอย่างเข้มงวดมากขึ้น กล่าวคือ ปริมาณการใช้ไม่รับประกันว่าจะอยู่ภายในขีดจำกัดที่ระบุภายใต้เงื่อนไขทั้งหมด ขีดจำกัดแบบซอฟต์มีประโยชน์สำหรับการเพิ่มประสิทธิภาพโปรแกรมที่ทำงานในคอนเทนเนอร์หน่วยความจำแบบตายตัว

นอกจากนี้ยังมีการเน้นย้ำว่า บนระบบ Unix ตัวอธิบายไฟล์เพิ่มเติมจะถูกเปิดใช้งานโดยอัตโนมัติ (เพิ่มขีดจำกัด RLIMIT_NOFILE) เพื่อเพิ่มความเร็วนิพจน์การเปลี่ยนแปลงขนาดใหญ่บนระบบ x86-64 และ ARM64 มีการใช้ตารางข้าม ซึ่งช่วยให้ประมวลผลนิพจน์การเปลี่ยนแปลงขนาดใหญ่ได้เร็วขึ้นสูงสุด 20%

ในระบบ riscv64 มีการใช้อาร์กิวเมนต์ของฟังก์ชันผ่านการลงทะเบียน CPU ซึ่งอนุญาตให้เพิ่มประสิทธิภาพได้ประมาณ 10%

จากการเปลี่ยนแปลงอื่น ๆ ที่โดดเด่นกว่ารุ่นใหม่นี้:

  • มีการใช้การปรับประสิทธิภาพให้เหมาะสมมากมาย
  • เพิ่มการรองรับการตั้งค่าขนาดสแต็กรูทีนแบบไดนามิกเพื่อลดขนาดของข้อมูลที่คัดลอก
  • เพิ่มการรองรับแบบทดลองสำหรับสภาพแวดล้อม Linux บนระบบที่มีโปรเซสเซอร์ Loongson ซึ่งใช้สถาปัตยกรรม LoongArch 64 บิต (GOARCH=loong64)
  • การเปลี่ยนรุ่นหน่วยความจำจะไม่ส่งผลต่อความเข้ากันได้กับโค้ดที่เขียนไว้ก่อนหน้านี้
  • เพิ่มข้อจำกัดบิลด์ "unix" ใหม่ที่สามารถใช้ได้ในบรรทัด "go:build" เพื่อกรองระบบที่คล้าย Unix (aix, android, ดาร์วิน, แมลงปอ, freebsd, hurd, illumos, ios, linux, netbsd, openbsd, solaris ).
  • เพื่อปรับปรุงความปลอดภัย ตอนนี้โมดูล os/exec จะละเว้นพาธสัมพัทธ์เมื่อขยายตัวแปรสภาพแวดล้อม PATH (ตัวอย่างเช่น เมื่อกำหนดพาธของไฟล์เรียกทำงาน ไดเร็กทอรีปัจจุบันจะไม่ถูกตรวจสอบอีกต่อไป)

สุดท้ายนี้ หากคุณสนใจเรียนรู้เพิ่มเติมเกี่ยวกับรุ่นใหม่นี้ สามารถตรวจสอบรายละเอียดได้ที่ ลิงค์ต่อไปนี้


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา