- Bản viết lại bằng Rust của Bun đã vượt qua 99,8% bộ kiểm thử hiện có trong môi trường Linux x64 glibc
- Codebase này “về cơ bản là cùng một codebase”, và việc chuyển sang Rust cho phép trình biên dịch ép buộc vòng đời kiểu dữ liệu và dùng destructor vào đúng thời điểm cần thiết
- Các phần không an toàn trở nên rõ ràng hơn với unsafe của Rust, qua đó tạo tác động thúc đẩy việc refactor
- Lý do viết lại là vì đã quá mệt mỏi khi phải dành nhiều thời gian lo lắng và sửa rò rỉ bộ nhớ, crash và các vấn đề ổn định, đồng thời muốn ngôn ngữ cung cấp công cụ mạnh hơn để ngăn chặn điều đó
- Quy mô tổng thể được mô tả là viết lại 960.000 LOC, hiện đã vượt qua bộ kiểm thử trên Linux và các nền tảng khác cũng sẽ sớm được nhắm tới
Trạng thái bản viết lại Rust
- Bản viết lại bằng Rust của Bun đã vượt qua 99,8% bộ kiểm thử hiện có trong môi trường Linux x64 glibc
- Codebase này “về cơ bản là cùng một codebase”, và khi chuyển sang Rust, trình biên dịch có thể ép buộc vòng đời của kiểu dữ liệu và dùng destructor vào đúng thời điểm cần thiết
- Các phần không an toàn trong Rust được bộc lộ rõ hơn qua unsafe, từ đó tạo tác động thúc đẩy refactor
- Đằng sau việc viết lại là sự mệt mỏi vì phải dành quá nhiều thời gian lo lắng và sửa rò rỉ bộ nhớ, crash và các vấn đề ổn định, cùng mong muốn ngôn ngữ cung cấp công cụ mạnh hơn để ngăn các vấn đề này
- Quy mô tổng thể được mô tả là viết lại 960.000 LOC, và mã hiện thực sự hoạt động, vượt qua bộ kiểm thử trên Linux, với các nền tảng khác cũng sẽ sớm được nhắm tới
Nội dung sẽ công bố tiếp theo và trả lời về build
- Ý nghĩa đối với Bun, benchmark, mức sử dụng bộ nhớ, khả năng bảo trì về sau và quá trình viết lại thực tế sẽ được đề cập trong một bài blog riêng
- Quá trình viết lại không đơn giản chỉ là nói “claude, rewrite bun in rust. make no mistakes”, và công việc để đạt tới trạng thái chạy được đến cùng mới bắt đầu từ 6 ngày trước
- Điều này được mô tả là sẽ là khối lượng công việc khổng lồ nếu làm hoàn toàn thủ công
- Thời gian biên dịch về cơ bản tương đương với phiên bản Zig hiện tại dùng trình biên dịch Zig nhanh hơn, và nếu dùng upstream Zig compiler thì bản port sang Rust thậm chí còn biên dịch nhanh hơn
- Hiệu năng sẽ được đề cập trong một bài blog riêng
- Về bước tiếp theo là thay thế chính libc bằng phiên bản Rust là frankenlibc, thì trước đó tác giả nói sẽ tự làm libc trực tiếp
1 bình luận
Ý kiến trên Hacker News
4 ngày trước cũng đã có nội dung tương tự: https://news.ycombinator.com/item?id=48019226
Một người làm ở Bun nói đó là nhánh riêng của họ, thread lúc đó là phản ứng thái quá với đoạn mã chưa chạy được, và họ chưa từng chốt sẽ tái viết, hơn nữa rất có thể toàn bộ đoạn mã sẽ bị bỏ đi
Họ nói muốn xem phiên bản chạy được trông như thế nào, hiệu năng và khả năng bảo trì ra sao, và việc cho nó vượt qua bộ test của Bun khó đến mức nào, rồi so sánh bản Rust và bản Zig đặt cạnh nhau
cargo checkbáo hơn 16.000 lỗi trình biên dịch, và nó không thể in số phiên bản hay chạy JavaScriptKhông ngờ nó có thể hoạt động nhanh đến vậy, cũng không ngờ hiệu năng lại cạnh tranh đến thế; chi tiết sẽ có trong một bài blog sắp tới
Đáng ra phải đoán được sau khi bị Anthropic mua lại, nhưng vẫn thấy thất vọng. Tôi không phản đối bản thân công nghệ mô hình ngôn ngữ lớn, nhưng cách các công ty “AI” này nuốt dần ngành phần mềm và xã hội nói chung để giành quyền lực thì thật kinh tởm, và đang tạo ra sự phụ thuộc rất không lành mạnh
Cần nhìn trước vài nước và chuẩn bị stack phần mềm và cộng đồng không có slop. Trong đó có cả Zig và hệ sinh thái của nó. Dù chúng ta và các thế hệ sau có thể không hoàn toàn sống thiếu slop, việc bảo đảm một nền văn hóa điện toán bền vững với tự do đúng nghĩa vẫn quan trọng hơn bao giờ hết
Làm nhanh đến vậy thật rất ấn tượng. Tương tự, tôi đã làm một dự án port TypeScript sang Rust được 5 tháng, nhưng không có Mythos hay quyền truy cập token không giới hạn
Dù vậy, cũng đã gần đạt tỷ lệ pass 100%, và tại thời điểm viết là 99,6%: https://tsz.dev
Rust rất hợp để viết code bằng mô hình ngôn ngữ lớn. Nhờ hệ thống kiểu nghiêm ngặt, nó giúp tránh bớt những lỗi ngớ ngẩn mà ở ngôn ngữ khác có thể vẫn lọt qua
Tuy nhiên, việc viết code bằng mô hình ngôn ngữ lớn không làm biến mất nhu cầu về tầm nhìn thiết kế và khả năng cân nhắc trade-off khi xây dự án. Vì thế Jarred và đội ngũ là những người phù hợp để tận dụng lượng lớn code do mô hình ngôn ngữ lớn tạo ra
Ngược lại, Rust là một ngôn ngữ phức tạp nên thay đổi nhỏ rất dễ kéo theo cơn lở tuyết refactor, buộc phải sửa lại cả những đoạn mã ở rất xa. Nếu kiến trúc ban đầu tệ hoặc thiếu, thì khi mô hình ngôn ngữ lớn dần mở rộng codebase theo cách thường thấy, nguy cơ nó biến thành spaghetti là rất lớn
Cuối cùng tôi lo rằng nó sẽ thành một chương trình biên dịch được, chạy được, nhưng con người không thể đọc hay bảo trì nổi
Không có Mythos, tất cả chỉ là 8 tài khoản Codex giá $200/tháng
Tôi cũng thấy điểm mạnh của Rust ở đây, và dựa trên kinh nghiệm với Postgres, tôi tin có thể đưa ra nhiều quyết định thiết kế tốt cho những phần mà mọi người đã vật lộn với pg suốt thời gian dài. Điều đáng mong đợi là nhờ AI, việc cải thiện những phần mềm phức tạp mà trước đây không thực tế giờ sẽ khả thi hơn
[0] https://github.com/malisper/pgrust
[1] https://malisper.me/the-four-horsemen-behind-thousands-of-po...
Ngay cả việc giữ hoặc dựng ranh giới sạch sẽ cũng không còn là trạng thái tập trung mà thành những buổi review đau đớn, rồi cuối cùng lại rơi vào chế độ trì hoãn
Tôi không có bằng chứng mạnh, nhưng giờ không muốn dính đến Bun nữa. Gần như chỉ là trực giác, nhưng tôi không còn có thể tin tưởng hay ủng hộ nó
Họ fork Zig để tận dụng việc tái viết bằng LLM, rồi tạo ra thứ như biên dịch không quyết định mà đội Zig rõ ràng không hề muốn
Giờ lại như đang than vãn và dùng LLM để tái viết sang Rust. Có thể chính triết lý thiết kế của Zig — ép buộc những quyết định khó nhưng đúng — đã đưa họ đến vị trí hiện tại, và việc tái viết sang Rust thật sự có thể là khởi đầu của sự sa sút
Đây là đánh giá mang tính chính trị hơn là kỹ thuật, nhưng Bun trông như đang hoàn toàn dựa vào Claude. Tôi sẽ không ngạc nhiên nếu câu khẩu hiệu marketing tiếp theo của Anthropic là “Claude Mythos tái viết JS runtime 950K LOC hàng đầu sang Rust”
Thread Twitter được link vào có đưa ra cơ sở kỹ thuật rõ ràng
Làm việc trong hệ sinh thái JS/NPM vốn đã phụ thuộc rất nhiều vào niềm tin thuần túy với những dependency chưa được kiểm chứng, và trước hay sau tái viết bằng LLM thì cũng chẳng khác gì. Nếu nó vẫn đáp ứng mục tiêu ban đầu và hợp đồng API, thì có khác biệt gì không? Cũng nghi ngờ rằng liệu trước đây họ có đọc kỹ mã nguồn hiện có hay không
Lúc nào cũng theo kiểu sẽ đè bẹp các đối thủ hiện có theo hướng tốt hơn, nhanh hơn, mạnh hơn, nhưng chuyện Keep It Simple Stupid thì rõ ràng là không bao giờ
Cũng quá rõ là trong tương lai gần, nơi duy nhất ta thấy nó trong môi trường production thực tế sẽ chỉ là các startup YC cháy lần lượt như bị tưới chất xúc tác. Giờ có vẻ đã qua điểm không thể quay đầu
Anthropic mua Bun như một nỗ lực hơi ngớ ngẩn để giải quyết vấn đề “hiệu năng” của chính họ. Có vẻ họ không nhận ra vấn đề ngay từ đầu là code quá tệ
Dù vậy, họ cũng đã kéo được vài lập trình viên thực sự giỏi về, nên có thể vẫn giúp được phần nào
Nhưng trong quá trình đó, Bun từ một dự án công khai đã trở nên gần với công cụ nội bộ của Anthropic hơn, và giờ đang được AI funding nuông chiều quá mức trong khi mất khá nhiều trọng tâm
Tôi hy vọng khi bong bóng xì hơi thì ít nhất vẫn cứu vãn được một phần công sức đã đổ vào Bun. Có vẻ Anthropic sẽ không bảo trì nó lâu dài. Họ đâu phải công ty bán dịch vụ hỗ trợ runtime, cũng không có quy mô kiểu Google để tiện tay duy trì một runtime ở bên cạnh
Nếu tạm bỏ qua yếu tố AI, tôi nghĩ đây là thay đổi tích cực
Bun khi dùng Zig có crash và lỗi bộ nhớ cực nhiều, khác với Deno viết trên Rust
Tất nhiên nếu bản Rust port của Bun có quá nhiều
unsafethì cũng không phải mọi thứ sẽ tự nhiên được giải quyết, nhưng dù sao vẫn sẽ tốt hơnViệc các phần xấu xí hiện rõ hơn khi nằm trong
unsafe, từ đó thúc đẩy refactor, có vẻ không chỉ là vấn đề của ngôn ngữ mà còn là thứ chính Bun phần nào tự gây raNếu vậy chẳng phải điều đó có nghĩa là gần như không thể làm phần mềm chất lượng cao bằng công cụ như thế sao? C/C++ cũng có rất nhiều thứ chất lượng tốt mà, nên tôi tự hỏi Zig đang làm sai điều gì
unsafeđược đánh dấu rõ ràng nên dễ tìm hơn, và tự nhiên sẽ hình thành một danh sách các vấn đề cần giải quyếtViệc này mất 6 ngày. Dù cuối cùng có không dẫn đến kết quả thực sự có ý nghĩa, nó vẫn cho thấy token và khối lượng công việc gắn với nhau như thế nào ở hiện tại và tương lai
Sẽ ngày càng khó cạnh tranh với cá nhân hay công ty có nhiều tài nguyên tính toán hơn. Họ đơn giản sẽ làm được những thứ mà tôi không làm được
Nếu có một codebase hoàn chỉnh làm ví dụ và có thể dùng bộ test để kiểm chứng, thì việc lặp để tiến gần mục tiêu mong muốn dễ hơn rất nhiều. Mô hình đã thấy mục tiêu là gì và một cách triển khai của nó trông ra sao, nên đây là bài toán dễ hơn nhiều so với bắt đầu từ đặc tả
Bạn bỏ vốn vào, tạo ra bằng kỹ thuật mở rộng đã được hiểu khá rõ, cắm điện vào là có giá trị
Ý ở đây là, trong thế giới hiện đại, khả năng xuất hiện tầng lớp “người có và người không có” có lẽ sẽ không xảy ra, cũng như điện đã không diễn ra như vậy
Điều tôi thấy đến nay là kiểu “wow, giờ tôi là kỹ sư gấp 10 lần!” rồi đẩy ra nhiều code hơn nhưng không có định hướng và gu rõ ràng. Phần lớn công việc dựa trên mô hình ngôn ngữ lớn hiện tại trông chỉ như nhiễu
Không biết bạn đã thử Qwen 3.6 27b chưa, nhưng những gì nó làm được so với kích thước thì thật điên rồ. Nếu quản lý ngữ cảnh tốt, các dự án nhỏ thậm chí có thể 100% vibe coding
Những mô hình kiểu này rồi cũng sẽ đi xuống theo cạnh tranh giá như điện toán thôi
Nhiều người đang tiếp nhận chuyện này theo đúng bề nổi, nhưng phần lớn điều đó khả thi là nhờ một bộ test rộng và toàn diện vượt chuẩn đã được xây dựng từ trước
Sau này khi marketing, sẽ tốt nếu họ cũng ghi kèm đã có bao nhiêu công sức của con người được đổ vào việc thiết kế và tuyển chọn bộ test giúp tạo ra tốc độ này
Bộ test gần như hoạt động như môi trường lý tưởng cho thế hệ mô hình ngôn ngữ lớn hiện tại. Một bộ test đủ toàn diện trở thành đặc tả mà agent có thể triển khai theo cách mong muốn, và ở đây đích đến là Rust
Với những bài test được xây dựng tốt như ở dự án Bun, trong vài trường hợp có cảm giác rằng thậm chí nếu bỏ toàn bộ source code và chỉ cho truy cập test, người ta vẫn có thể hiện thực lại toàn bộ từ đầu
Nếu trách nhiệm cũng nằm một phần ở bộ test, thì tôi cũng tò mò điều đó có ý nghĩa gì đối với bản port Rust
Còn hàng trăm nghìn giờ đổ vào kiến trúc gốc và bộ test khiến điều đó khả thi thì cứ bỏ qua sao
Có thể xem đây như một ví dụ cảnh báo về việc port sang Rust bằng AI
https://blog.katanaquant.com/p/your-llm-doesnt-write-correct...
Trình biên dịch C do Claude code tạo ra đã pass 100% test của gcc nhưng thậm chí không chạy nổi cả
hello worldNếu chỉ đưa test logic thì nó sẽ không hề quan tâm đến tốc độ. Nếu bạn đưa cả test đo tốc độ và yêu cầu đạt hiệu năng, nó cũng sẽ làm theo hướng đó
Đây cũng cùng loại lỗi như nhiều lỗi khác của mô hình ngôn ngữ lớn: nó không có ngữ cảnh thường thức về những gì con người xem là quan trọng. Nếu bạn không ép ranh giới thì nó sẽ bỏ qua
Thật là một thời đại điên rồ để được sống
Các động lực nền tảng của ngành và nghề đã thay đổi trong thời gian quá ngắn, gần như chỉ sau một đêm
Có ngày tôi thấy phấn khích vì giờ mình có thể làm được quá nhiều thứ. Gần như muốn gì cũng có thể tạo ra gần như ngay lập tức, và 100% những gì từng mơ về phần mềm có thể thành hiện thực
Có ngày tôi lại sợ điều gì sẽ xảy ra với thị trường việc làm
Đột nhiên ta có thể nhận được rất nhiều chỉ với rất ít, trong khi lượng phần mềm thế giới cần là hữu hạn
Liệu mọi công ty lấy việc bán phần mềm làm mô hình kinh doanh cốt lõi có phá sản không?
Nếu chỉ một số công ty hoặc chính phủ được tiếp cận những mô hình tốt nhất thì sao?
Liệu 100 công ty có 1 tỷ token mỗi công ty có thể làm ra sản phẩm tốt hơn một nhà cung cấp chuyên biệt sở hữu 100 tỷ token không?
Những vendor phần mềm và SaaS kiểu “trình tạo logo” thì đúng là đã chết rồi, nhưng trừ khi thế hệ mô hình ngôn ngữ lớn tiếp theo tích hợp sẵn cả hệ thống bán vé, các vendor hệ thống bán vé có lẽ vẫn ổn. Có thể cần ít nhân sự hơn, nhưng chưa chắc chắn
Đại loại là số người đổ vào quá đông so với lượng việc có thể chia nhau, và cú sụp đổ càng củng cố câu chuyện đó
Nhưng ngay cả khi còn là sinh viên lúc ấy, vẫn có thể thấy phạm vi của phần mềm gần như là vô hạn. Gần như mọi công việc nhận thức mà ta làm thủ công đều có thể làm bằng phần mềm. Tôi từng thử liệt kê những thứ như vậy, rồi nhanh chóng nhận ra còn quá nhiều việc phải làm
Hơn nữa, tôi cũng hiểu rằng càng làm việc theo cách mới, càng có nhiều việc chưa từng tưởng tượng nổi lại xuất hiện thêm. Khả năng là không thể đếm xuể, và câu chuyện “bão hòa” rõ ràng xuất phát từ sự thiếu trí tưởng tượng và thiếu hiểu biết về phần mềm thực sự là gì
Vì vậy tôi biết lĩnh vực này sẽ không bao giờ bão hòa. Không thể nào cạn thứ để xây bằng phần mềm được
Nhưng dạo này thì khác. Sau này ta vẫn sẽ luôn tạo ra phần mềm mới, nhưng giờ tôi bắt đầu tự hỏi liệu tốc độ chúng ta viết phần mềm có thể nhanh hơn tốc độ chúng ta tưởng tượng ra việc mới để làm hay không
Dù vậy công chúng vẫn có thể tự giúp mình bằng các mô hình chậm chân hơn tuyến đầu
Ít nhất thì việc theo dõi một nỗ lực như thế này cũng thú vị
Điều đầu tiên tôi muốn biết là ngay từ đầu độ bao quát và chất lượng của bộ test đến đâu. Không phải để bắt bẻ, nhưng tôi tò mò không biết kể cả khi đạt 100% trên mọi nền tảng thì đội Bun sẽ tự tin đến mức nào để thực hiện migration
Chuyện Ubuntu coreutils tuần trước đã khiến tôi có ấn tượng cực xấu với kiểu tái viết sang Rust đạt 99,8% tương thích test
Bấm vào tweet được link ở đây xong tôi thấy rùng mình, và giờ mỗi lần thấy kiểu này thì cảm xúc lại hoàn toàn ngược lại. Gần như khiến tôi muốn tìm đường thoát ra