Vào ngày 10 tháng 11, chúng tôi đã kỷ niệm 16 năm phát hành mã nguồn mở của Go!
\ Chúng tôi đã phát hành Go 1.24 vào tháng 2 và Go 1.25 vào tháng 8, theo chu kỳ phát hành đã được thiết lập và đáng tin cậy. Tiếp tục sứ mệnh xây dựng nền tảng ngôn ngữ hiệu quả nhất để phát triển các hệ thống sản xuất, những bản phát hành này bao gồm các API mới để xây dựng phần mềm mạnh mẽ và đáng tin cậy, những tiến bộ đáng kể trong thành tích của Go về xây dựng phần mềm bảo mật, và một số cải tiến quan trọng bên dưới. Trong khi đó, không ai có thể phớt lờ những thay đổi lớn trong ngành công nghiệp của chúng ta do AI tạo sinh mang lại. Đội ngũ Go đang áp dụng tư duy thấu đáo và không khoan nhượng đối với các vấn đề và cơ hội của không gian năng động này, nỗ lực mang phương pháp sẵn sàng cho sản xuất của Go vào việc xây dựng tích hợp AI, sản phẩm, AI Agent và cơ sở hạ tầng mạnh mẽ.
Được phát hành lần đầu trong Go 1.24 như một thử nghiệm và sau đó được nâng cấp trong Go 1.25, gói testing/synctest mới đơn giản hóa đáng kể việc viết các bài kiểm tra cho mã đồng thời, bất đồng bộ. Mã như vậy đặc biệt phổ biến trong các dịch vụ mạng, và truyền thống rất khó để kiểm tra tốt. Gói synctest hoạt động bằng cách ảo hóa chính thời gian. Nó biến các bài kiểm tra vốn chậm, không ổn định, hoặc cả hai, thành các bài kiểm tra đáng tin cậy và gần như tức thì, thường chỉ với vài dòng mã bổ sung. Đây cũng là một ví dụ tuyệt vời về cách tiếp cận tích hợp của Go đối với phát triển phần mềm: đằng sau một API gần như đơn giản, gói synctest ẩn chứa sự tích hợp sâu với runtime của Go và các phần khác của thư viện chuẩn.
\ Đây không phải là sự cải tiến duy nhất mà gói testing nhận được trong năm qua. API testing.B.Loop mới vừa dễ sử dụng hơn API testing.B.N ban đầu và giải quyết nhiều vấn đề truyền thống—và thường là không nhìn thấy!—khi viết các bài kiểm tra hiệu suất Go. Gói testing cũng có các API mới giúp dễ dàng dọn dẹp trong các bài kiểm tra sử dụng Context, và giúp dễ dàng ghi vào nhật ký kiểm tra.
\ Go và containerization phát triển cùng nhau và hoạt động tốt với nhau. Go 1.25 đã ra mắt lập lịch nhận biết container, làm cho sự kết hợp này thậm chí còn mạnh mẽ hơn. Mà không cần nhà phát triển phải làm gì, tính năng này tự động điều chỉnh tính song song của khối lượng công việc Go chạy trong container, ngăn chặn việc CPU bị giới hạn có thể ảnh hưởng đến độ trễ đuôi và cải thiện khả năng sẵn sàng sản xuất ngay khi cài đặt của Go.
\ Bộ ghi chuyến bay mới của Go 1.25 được xây dựng dựa trên trình theo dõi thực thi đã mạnh mẽ của chúng tôi, cho phép hiểu sâu về hành vi động của các hệ thống sản xuất. Trong khi trình theo dõi thực thi thường thu thập quá nhiều thông tin để có thể thực tế trong các dịch vụ sản xuất chạy dài, bộ ghi chuyến bay giống như một cỗ máy thời gian nhỏ, cho phép dịch vụ chụp nhanh các sự kiện gần đây với chi tiết tuyệt vời sau khi có sự cố xảy ra.
Go tiếp tục củng cố cam kết phát triển phần mềm bảo mật, đạt được những bước tiến đáng kể trong các gói mã hóa gốc và phát triển thư viện chuẩn để tăng cường an toàn.
\ Go đi kèm với một bộ đầy đủ các gói mã hóa gốc trong thư viện chuẩn, đã đạt được hai cột mốc quan trọng trong năm qua. Một cuộc kiểm toán bảo mật được thực hiện bởi công ty bảo mật độc lập Trail of Bits đã mang lại kết quả xuất sắc, với chỉ một phát hiện mức độ nghiêm trọng thấp. Hơn nữa, thông qua nỗ lực hợp tác giữa Đội Bảo mật Go và Geomys, các gói này đã đạt được chứng nhận CAVP, mở đường cho chứng nhận FIPS 140-3 đầy đủ. Đây là một bước phát triển quan trọng cho người dùng Go trong một số môi trường được quy định. Tuân thủ FIPS 140, trước đây là nguồn gây khó khăn do nhu cầu về các giải pháp không được hỗ trợ, giờ đây sẽ được tích hợp liền mạch, giải quyết các mối quan tâm liên quan đến an toàn, trải nghiệm nhà phát triển, chức năng, tốc độ phát hành và tuân thủ.
\ Thư viện chuẩn của Go tiếp tục phát triển để an toàn theo mặc định và an toàn theo thiết kế. Ví dụ, API os.Root—được thêm vào trong Go 1.24—cho phép truy cập hệ thống tệp chống duyệt, chống lại hiệu quả một lớp lỗ hổng mà kẻ tấn công có thể thao túng chương trình để truy cập các tệp dự định không thể truy cập. Những lỗ hổng như vậy nổi tiếng là khó giải quyết mà không có sự hỗ trợ của nền tảng và hệ điều hành cơ bản, và API os.Root mới cung cấp một giải pháp đơn giản, nhất quán và di động.
Ngoài những thay đổi người dùng có thể nhìn thấy, Go đã có những cải tiến đáng kể bên dưới trong năm qua.
\ Đối với Go 1.24, chúng tôi đã thiết kế lại hoàn toàn việc triển khai map, dựa trên những ý tưởng mới nhất và tốt nhất trong thiết kế bảng băm. Thay đổi này hoàn toàn trong suốt, và mang lại những cải tiến đáng kể về hiệu suất map, giảm độ trễ đuôi của các hoạt động map, và trong một số trường hợp thậm chí còn tiết kiệm bộ nhớ đáng kể.
\ Go 1.25 bao gồm một tiến bộ thử nghiệm và đáng kể trong bộ thu gom rác của Go được gọi là Green Tea. Green Tea giảm chi phí thu gom rác trong nhiều ứng dụng ít nhất 10% và đôi khi lên đến 40%. Nó sử dụng một thuật toán mới được thiết kế cho khả năng và hạn chế của phần cứng hiện đại và mở ra một không gian thiết kế mới mà chúng tôi đang háo hức khám phá.
\ Ví dụ, trong bản phát hành Go 1.26 sắp tới, Green Tea sẽ đạt được giảm thêm 10% chi phí bộ thu gom rác trên phần cứng hỗ trợ lệnh vector AVX-512—điều mà gần như không thể tận dụng trong thuật toán cũ. Green Tea sẽ được bật theo mặc định trong Go 1.26; người dùng chỉ cần nâng cấp phiên bản Go của họ để được hưởng lợi.
Go không chỉ là ngôn ngữ và thư viện chuẩn. Đó là một nền tảng phát triển phần mềm, và trong năm qua, chúng tôi cũng đã thực hiện bốn bản phát hành thường xuyên của máy chủ ngôn ngữ gopls, và đã hình thành các quan hệ đối tác để hỗ trợ các framework mới nổi cho các ứng dụng agent.
\ Gopls cung cấp hỗ trợ Go cho VS Code và các trình soạn thảo và IDE hỗ trợ LSP khác. Mỗi bản phát hành đều có rất nhiều tính năng và cải tiến cho trải nghiệm đọc và viết mã Go (xem ghi chú phát hành v0.17.0, v0.18.0, v0.19.0 và v0.20.0 để biết chi tiết đầy đủ, hoặc tài liệu tính năng gopls mới của chúng tôi!). Một số điểm nổi bật bao gồm nhiều trình phân tích mới và nâng cao để giúp nhà phát triển viết mã Go đúng cách và mạnh mẽ hơn; hỗ trợ tái cấu trúc cho trích xuất biến, nội tuyến biến và thẻ cấu trúc JSON; và một máy chủ tích hợp thử nghiệm cho Giao thức Ngữ cảnh Mô hình (MCP) hiển thị một tập hợp con chức năng của gopls cho trợ lý AI dưới dạng công cụ MCP.
\ Với gopls v0.18.0, chúng tôi bắt đầu khám phá công cụ hiện đại hóa mã tự động. Khi Go phát triển, mỗi bản phát hành mang lại khả năng và cách diễn đạt mới; cách mới và tốt hơn để làm những việc mà lập trình viên Go đã tìm cách khác để làm. Go giữ vững lời hứa về khả năng tương thích—cách cũ sẽ tiếp tục hoạt động mãi mãi—nhưng dù sao điều này cũng tạo ra sự phân chia giữa cách diễn đạt cũ và mới. Công cụ hiện đại hóa là các công cụ phân tích tĩnh nhận ra cách diễn đạt cũ và đề xuất thay thế nhanh hơn, dễ đọc hơn, bảo mật hơn, hiện đại hơn, và làm như vậy với độ tin cậy chỉ cần nhấn nút. Những gì gofmt đã làm cho tính nhất quán về phong cách, chúng tôi hy vọng công cụ hiện đại hóa có thể làm cho tính nhất quán về cách diễn đạt.
\ Chúng tôi đã tích hợp công cụ hiện đại hóa như các đề xuất IDE, nơi chúng có thể giúp nhà phát triển không chỉ duy trì tiêu chuẩn mã hóa nhất quán hơn, mà còn giúp họ khám phá các tính năng mới và bắt kịp với công nghệ tiên tiến. Chúng tôi tin rằng công cụ hiện đại hóa cũng có thể giúp trợ lý mã hóa AI bắt kịp với công nghệ tiên tiến và chống lại xu hướng củng cố kiến thức lỗi thời về ngôn ngữ Go, API và cách diễn đạt. Bản phát hành Go 1.26 sắp tới sẽ bao gồm việc cải tổ toàn diện lệnh go fix đã ngủ quên từ lâu để áp dụng toàn bộ bộ công cụ hiện đại hóa hàng loạt, quay trở lại nguồn gốc trước Go 1.0.
\ Vào cuối tháng 9, với sự hợp tác của Anthropic và cộng đồng Go, chúng tôi đã phát hành v1.0.0 của SDK Go chính thức cho Giao thức Ngữ cảnh Mô hình (MCP). SDK này hỗ trợ cả máy khách MCP và máy chủ MCP, và là nền tảng cho chức năng MCP mới trong gopls. Đóng góp công việc này vào mã nguồn mở giúp trao quyền cho các lĩnh vực khác của hệ sinh thái agent mã nguồn mở đang phát triển xung quanh Go, chẳng hạn như Agent Development Kit (ADK) cho Go từ Google vừa được phát hành. ADK Go xây dựng trên SDK MCP Go để cung cấp một framework đúng cách cho việc xây dựng các ứng dụng và hệ thống đa agent mô-đun. SDK MCP Go và ADK Go chứng minh cách các điểm mạnh độc đáo của Go trong đồng thời, hiệu suất và độ tin cậy phân biệt Go cho phát triển AI sản xuất và chúng tôi đang kỳ vọng nhiều khối lượng công việc AI sẽ được viết bằng Go trong những năm tới.
Go có một năm thú vị phía trước.
\ Chúng tôi đang làm việc để nâng cao năng suất nhà phát triển thông qua lệnh go fix hoàn toàn mới, hỗ trợ sâu hơn cho trợ lý mã hóa AI, và cải tiến liên tục cho gopls và VS Code Go. Sự sẵn có chung của bộ thu gom rác Green Tea, hỗ trợ gốc cho các tính năng phần cứng Single Instruction Multiple Data (SIMD), và hỗ trợ runtime và thư viện chuẩn để viết mã mở rộng tốt hơn cho phần cứng đa lõi lớn sẽ tiếp tục điều chỉnh Go với phần cứng hiện đại và cải thiện hiệu quả sản xuất.
\ Chúng tôi đang tập trung vào các thư viện "ngăn xếp sản xuất" và chẩn đoán của Go, bao gồm một nâng cấp lớn (và đã lâu) cho encoding/json, do Joe Tsai và mọi người trong cộng đồng Go thực hiện; lập hồ sơ goroutine bị rò rỉ, được đóng góp bởi đội Hệ thống Lập trình của Uber; và nhiều cải tiến khác cho net/http, unicode, và các gói nền tảng khác. Chúng tôi đang làm việc để cung cấp con đường rõ ràng cho việc xây dựng với Go và AI, phát triển nền tảng ngôn ngữ với sự quan tâm đến nhu cầu phát triển của các nhà phát triển ngày nay, và xây dựng công cụ và khả năng giúp cả nhà phát triển con người và trợ lý AI và hệ thống.
\ Trong dịp kỷ niệm 16 năm phát hành mã nguồn mở của Go, chúng tôi cũng đang nhìn về tương lai của chính dự án mã nguồn mở Go. Từ những bước đầu khiêm tốn, Go đã hình thành một cộng đồng đóng góp phát triển mạnh mẽ. Để tiếp tục đáp ứng tốt nhất nhu cầu của cơ sở người dùng ngày càng mở rộng của chúng tôi, đặc biệt là trong thời điểm biến động của ngành công nghiệp phần mềm, chúng tôi đang làm việc để mở rộng quy mô quy trình phát triển của Go tốt hơn—mà không mất đi tầm nhìn về các nguyên tắc cơ bản của Go—và thu hút sâu hơn cộng đồng đóng góp tuyệt vời của chúng tôi.
\ Go sẽ không thể đạt được vị trí như ngày nay nếu không có cộng đồng người dùng và đóng góp tuyệt vời của chúng tôi. Chúng tôi chúc tất cả các bạn những điều tốt đẹp nhất trong năm tới!
Austin Clements, thay mặt đội ngũ Go
\ Bài viết này có sẵn trên The Go Blog theo giấy phép CC BY 4.0 DEED.
\ Ảnh của Jason Leung trên Unsplash

Sao chép liên kếtX (Twitter)LinkedInFacebookEmail
Bản tin sáng châu Á: BTC ổn định
