1 điểm bởi GN⁺ 5 giờ trước | 1 bình luận | Chia sẻ qua WhatsApp
  • pgrust là dự án viết lại bằng Rust hướng tới tương thích với Postgres 18.3, và khớp với đầu ra kỳ vọng của Postgres trên hơn 46.000 truy vấn hồi quy
  • Có khả năng tương thích đĩa để khởi động từ thư mục dữ liệu Postgres 18.3 hiện có, và lấy các bài kiểm thử Postgres thực tế làm chuẩn hành vi
  • Hiện chưa sẵn sàng cho production, cũng chưa được tối ưu hiệu năng; các extension Postgres hiện có và extension ngôn ngữ thủ tục như PL/Python, PL/Perl, PL/Tcl nhìn chung chưa tương thích
  • Có thể chạy thử qua demo WebAssembly và Docker image malisper/pgrust:v0.1; latest hiện trỏ tới cùng bản phát hành, nhưng image chạy cố định là v0.1
  • Lộ trình bao gồm kiến trúc nội bộ Postgres đa luồng, connection pooling tích hợp, cải thiện workload tập trung vào JSON, thử nghiệm storage no-vacuum, và guardrail runtime cho SQL do AI tạo

Mục tiêu và khả năng tương thích của pgrust

  • pgrust là dự án viết lại Postgres bằng Rust
  • Mục tiêu là Postgres 18.3, và khớp với đầu ra kỳ vọng của Postgres trên hơn 46.000 truy vấn hồi quy
  • Cung cấp khả năng tương thích đĩa để khởi động từ thư mục dữ liệu Postgres 18.3 hiện có
  • Mục tiêu của dự án là giúp việc thay đổi Postgres từ bên trong trở nên dễ dàng hơn
    • Hành vi vẫn giữ theo dạng Postgres
    • Sử dụng các bài kiểm thử Postgres thực tế làm chuẩn
    • Khám phá các thay đổi sâu hơn trong server bằng Rust và lập trình có AI hỗ trợ

Trạng thái hiện tại và giới hạn

  • pgrust hiện chưa sẵn sàng cho production
  • Vẫn chưa được tối ưu hiệu năng
  • Các extension Postgres hiện có và extension ngôn ngữ thủ tục nhìn chung hiện chưa tương thích
    • PL/Python
    • PL/Perl
    • PL/Tcl
  • Một số module contrib đi kèm đã được port, và theo thời gian có thể đạt thêm nhiều khả năng tương thích hơn

Cách chạy

  • Có thể chạy thử demo WebAssembly tại https://pgrust.com
  • Chạy bằng Docker sử dụng image malisper/pgrust:v0.1
    • Sử dụng client psql bên trong image
    • malisper/pgrust:latest hiện trỏ tới cùng bản phát hành
    • Image phát hành cố định là v0.1
docker run -d --name pgrust -e POSTGRES_PASSWORD=secret malisper/pgrust:v0.1 && until docker exec -e PGPASSWORD=secret pgrust psql -h 127.0.0.1 -U postgres -c '\q' >/dev/null 2>&1; do sleep 1; done && docker exec -it -e PGPASSWORD=secret pgrust psql -h 127.0.0.1 -U postgres; docker rm -f pgrust

Build từ mã nguồn và chạy

  • Trên macOS cần icu4c, openssl@3, libpq
brew install icu4c openssl@3 libpq

export LIBRARY_PATH="$(brew --prefix openssl@3)/lib:${LIBRARY_PATH:-}"
export PKG_CONFIG_PATH="$(brew --prefix openssl@3)/lib/pkgconfig:$(brew --prefix icu4c)/lib/pkgconfig:${PKG_CONFIG_PATH:-}"
export PATH="$(brew --prefix libpq)/bin:$PATH"
  • Trên Debian/Ubuntu, cài công cụ build cùng ICU, OpenSSL, LDAP, PAM và client Postgres 18
sudo apt-get update
sudo apt-get install -y build-essential pkg-config libicu-dev libssl-dev libldap2-dev libpam0g-dev postgresql-client-18
  • Việc build được thực hiện bằng cargo build, với chỉ định thư mục share của Postgres 18.3 được vendored
PGRUST_PGSHAREDIR="$PWD/vendor/postgres-18.3/share" \
cargo build --release --locked --bin postgres
  • Thư mục dữ liệu được tạo bằng --initdb của pgrust
target/release/postgres --initdb \
  -D /tmp/pgrust-data \
  -L "$PWD/vendor/postgres-18.3/share" \
  --no-locale \
  --encoding UTF8 \
  -U postgres
  • Khi chạy, dùng kèm thiết lập liên quan đến stack và thiết lập I/O đồng bộ
ulimit -s 65520

RUST_MIN_STACK=33554432 target/release/postgres \
  -D /tmp/pgrust-data \
  -F \
  -c listen_addresses= \
  -k /tmp \
  -p 5432 \
  -c io_method=sync \
  -c max_stack_depth=60000

Kiểm thử hồi quy và kết quả xác minh

  • Bộ kiểm thử hồi quy Postgres được chạy bằng scripts/run-regression
PGRUST_BIN="$PWD/target/release/postgres" \
scripts/run-regression
  • Test runner sử dụng --initdb riêng của pgrust và các file kiểm thử Postgres 18.3 có trong repository
  • Cần có client Postgres 18 psql trong PATH
    • Nếu ở vị trí khác, thiết lập PGRUST_PSQL=/path/to/psql
  • Kết quả phát hành đã được xác minh là pgrust khớp với đầu ra kỳ vọng của Postgres trên hơn 46.000 truy vấn hồi quy

Lộ trình và lịch sử dự án

  • Lộ trình bao gồm các hạng mục sau
    • Kiến trúc nội bộ Postgres đa luồng

      • Connection pooling tích hợp
      • Cải thiện hỗ trợ workload tập trung vào JSON
      • Quy trình fork và branching nhanh
      • Thử nghiệm storage, bao gồm thiết kế no-vacuum
      • Guardrail runtime cho truy vấn sai và SQL do AI tạo
      • Giảm các lần chuyển đột ngột sang execution plan kém
      • Repository hiện tại chứa triển khai pgrust mới hơn đã đạt mốc kiểm thử hồi quy
      • Triển khai công khai trước đây được lưu trữ tại archive/pre-fabled-2026-06-23
      • Các liên kết nền tảng liên quan
      • Original pgrust launch
      • 67% regression update
      • Four Horsemen roadmap
      • Giấy phép là AGPL-3.0

1 bình luận

 
Ý kiến trên Hacker News
  • Tôi là tác giả gốc. Không ngờ nó lại lên đây. Tóm lại, tôi đã làm một thử nghiệm để tạo ra Postgres tốt hơn bằng LLM, và vì Postgres đã 30 năm tuổi nên tôi nghĩ trong thời gian đó chúng ta cũng đã học được rất nhiều về cơ sở dữ liệu
    Khá nhiều kỹ thuật hữu ích cho việc viết lại cũng hữu ích cho việc thiết kế lại. Phiên bản pgrust mới chưa công bố hiện đã vượt qua 100% bài kiểm tra hồi quy của Postgres, triển khai mô hình thread cho mỗi kết nối thay vì mô hình tiến trình cho mỗi kết nối của Postgres, nhanh hơn Postgres 50% trên tải giao dịch và nhanh hơn khoảng 300 lần trên tải phân tích
    Hiện tại nó chậm hơn ClickHouse 2 lần trong clickbench, nhưng tôi nghĩ nó có thể nhanh hơn ClickHouse. Nếu có câu hỏi tôi sẽ trả lời

    • Thread cho mỗi kết nối gần như luôn là lựa chọn đúng về mặt hiệu năng, nhưng nhờ Postgres chọn tiến trình cho mỗi kết nối nên có thể thoải mái nạp các extension đáng ngờ. Trường hợp xấu nhất thì chỉ tiến trình đó chết chứ không phải toàn bộ cơ sở dữ liệu. Sẽ tốt nếu có một điểm cân bằng để khi extension bị segmentation fault thì chỉ một số kết nối chết thay vì toàn bộ
    • Cải thiện 50% trong OLTP thì hơi đáng nghi. Tôi không muốn chỉ trích vô căn cứ, và bản thân tôi cũng hay đưa ra tuyên bố benchmark, nhưng dù biết là đã dùng benchmark tiêu chuẩn thì tôi vẫn thấy có gì đó không ổn
      Có thể ở đâu đó đã phá vỡ MVCC để đổi lấy thứ không thể đưa vào production. Tôi có thấy là nó vượt qua các bài kiểm tra hồi quy. fsync có đang bật không? Theo tôi biết thì kiểm tra hồi quy không bắt được tốt các mẫu I/O tệ. Dù vậy trông vẫn là một dự án thú vị
    • Tôi tò mò về nền tảng thực tế và chuyên môn của bạn với Postgres và cơ sở dữ liệu nói chung. Cuối cùng thì tôi muốn biết bạn có thực sự hiểu chính xác mình đang làm gì không, hay là đang có một bãi mìn khổng lồ chưa biết nằm đâu đó
    • Trông có vẻ đây là một thử nghiệm hơn là ra mắt sản phẩm, nhưng ai đó đã đẩy nó ra trước đầu xe buýt spotlight của HN. Tôi muốn biết đây là thử nghiệm xem có thể đi xa đến đâu với việc viết code bằng LLM, hay là thử nghiệm xây trước rồi xem có thể chấp nhận bao nhiêu phần trăm code do LLM tạo ra
    • Việc nhanh hơn Postgres khoảng 300 lần trên tải phân tích nhưng chậm hơn ClickHouse 2 lần có nghĩa là dữ liệu được lưu theo định dạng cột à? Hay là dùng cả kiểu hàng lẫn kiểu cột?
      Tôi đang làm một việc tương tự nhưng khác, là tạo δx. Đây là một extension của Postgres lưu dữ liệu nén dạng cột bên trong bảng Postgres thông thường nên sao chép, khôi phục sự cố, pg_dump v.v. vẫn hoạt động nguyên vẹn: https://github.com/xataio/deltax
      Hiện tại trên một node đơn lẻ nó chậm hơn ClickHouse 30~40%. PR thêm nó vào clickbench vừa được chấp nhận, nên có thể xem so sánh tại đây: https://benchmark.clickhouse.com/#system=+liH|_etx|gQ|saB&ty...
  • Tôi không thực sự hiểu các kiểu viết lại như thế này. Thường một người sẽ dẫn dắt, và rất dễ trở thành điểm lỗi đơn lẻ, lại còn được làm trong thời gian rất ngắn nên khó nói là đã rèn được tính kỷ luật để xây dự án bền bỉ
    Về trung và dài hạn thì khả năng được duy trì cũng có vẻ thấp. Người muốn đóng góp cũng phải trả chi phí token. Vì ngày càng khó duy trì những dự án như vậy nếu không có AI. Có ai thực sự muốn đưa thứ này vào production không? Nghe không hợp lý lắm

    • Đây không chỉ là viết lại đơn thuần mà còn có cải tiến. Tôi từng làm việc tương tự cho vui, muốn xem liệu có thể cải thiện các thiết kế cũ, đặc biệt là những phần mà phía PostgreSQL từng nói rằng “không thể làm khác được” hay không. Thực ra là có thể làm khác
      Tôi sẽ không đưa nó vào production, nhưng đã học được rất nhiều về bên trong cơ sở dữ liệu. Ngay cả trong thời đại LLM, để đầu óc vẫn thấy hứng thú, tôi cũng triển khai các tính năng cơ sở dữ liệu cho cơ sở dữ liệu production của chúng tôi mà không dùng LLM. Gần đây tôi đang vật lộn với Flexible Paxos, dù có lẽ cuối cùng vẫn sẽ tiếp tục dùng Raft vì nó cũ, ổn định và đơn giản hơn, nhưng dù sao cũng rất thú vị
    • Tôi xem đây là một bằng chứng khái niệm thú vị. Không chỉ là viết lại PostgreSQL bằng Rust, mà còn là cách thử nghiệm khả năng của các dependency đã chọn, việc thay đổi mô hình thread và những thay đổi kiến trúc khác
      LLM rất mạnh trong việc tạo prototype cực nhanh, và một prototype chạy được có thể chấm dứt rất nhiều suy đoán. Nếu không có chính đội ngũ gốc hoặc một lượng nhân lực đáng kể tương đương đứng sau, và không có giải thích đáng tin rằng nó đã đạt hoặc vượt chất lượng mã nguồn và khả năng bảo trì của bản gốc, thì tôi có lẽ sẽ không dùng bản viết lại của một dự án khổng lồ như thế này
      Nói chung, việc dùng LLM để rửa giấy phép thì tôi thấy khó biện hộ cả về pháp lý lẫn đạo đức. Nhưng trường hợp này khác ở chỗ họ đã chọn một giấy phép hạn chế hơn. Tôi không phải luật sư, nhưng theo hiểu biết của tôi thì tải PostgreSQL về, s/MIT/AGPL/ rồi phân phối lại là hợp pháp. Vì bản MIT gốc vẫn còn đó, nên trước khi có tính năng mới đủ thuyết phục thì không có lý do gì để ưu tiên bản đó
    • Không hoàn toàn giống, nhưng dựa trên một bộ bản vẽ có sẵn để dựng lại mô hình 3D thì nhanh và dễ hơn rất nhiều so với làm từ đầu. Vì rất nhiều quyết định đã được đưa ra sẵn
    • Với một dự án cỡ Postgres, việc duy trì mà không có AI thực tế gần như là không thể. Nếu tôi nhớ không nhầm thì Postgres có hơn 1 triệu dòng mã
  • Cách tốt nhất để kiểm thử thứ này có lẽ là đặt một proxy như PgBouncer trước một cơ sở dữ liệu production bận rộn, rồi mirror query đồng thời tới Postgres hiện tại và phiên bản Rust
    Như vậy có thể so sánh đầu ra và hiệu năng dưới tải thực. Sau khi chạy một thời gian, cũng có thể đem từng bảng ra đối chiếu với instance Postgres thông thường

  • Nên đánh giá kiểu mã này như thế nào? Thông thường người ta sẽ lướt lịch sử commit để xem mọi người đã làm gì và làm như thế nào, nhưng nếu LLM tạo ra 7101 commit trong chưa đầy một tháng thì điều đó là bất khả thi.
    Chỉ xem riêng một ngày thôi cũng đã quá nhiều [1]. Dù sao thì nội dung commit cũng có thể không cho biết được bao nhiêu. Cũng tò mò không biết có cách nào dễ để đi tới commit đầu tiên của kho trên GitHub hay không. Việc lần theo lịch sử commit có cảm giác khá phiền phức.
    [1] - https://github.com/malisper/pgrust/commits/main/?since=2026-...

    • Tôi đang cùng làm với malisper trên pgrust. Với những dự án như thế này, có lẽ trọng tâm sẽ chuyển từ việc rà từng commit sang xem xét quy trình kiểm thử và fuzzing.
      Cần đi xa hơn rất nhiều so với các bài kiểm thử hồi quy, cô lập và lỗi của Postgres. Bài viết danluu liên quan: https://danluu.com/ai-coding/
    • github cli có lệnh truy vấn commit với cờ sắp xếp tăng dần/giảm dần: https://cli.github.com/manual/gh_search_commits
      Tài liệu cú pháp như before x date ở đây: https://docs.github.com/en/search-github/searching-on-github...
      Cũng có trang tìm kiếm nâng cao, nhưng không hỗ trợ commit với bộ lọc ngày: https://github.com/search/advanced
      Cũng có thể tìm nhị phân theo ngày trong tiện ích tìm kiếm, và ngày đầu tiên có commit là ở đây: https://github.com/malisper/pgrust/commits/main/?since=2026-...
      Commit đầu tiên: https://github.com/malisper/pgrust/commit/22113dc36b02973060...
    • Nói chung, nếu không có lịch sử prompt và không thể trực tiếp chạy lại “bản biên dịch” LLM, thì khá khó nói đây có phải là mã nguồn mở hay không. Có cảm giác nó gần với một dự án “công khai mã nguồn”, nơi có thể đọc mã nhưng không thể truy cập hệ thống build.
      Mặt khác, ngoài message commit ra thì từ trước đến nay chúng ta cũng đâu có tiếp cận được quá trình suy nghĩ nội bộ của lập trình viên con người, nên nói rằng prompt bí mật đồng nghĩa với mã nguồn đóng cũng có lẽ không hoàn toàn tương đương
    • Để đi tới commit đầu tiên trên GitHub một cách dễ dàng, có thể dùng cú pháp github.com/user/repo/commits/?after=last_commit_hash+number_of_commits-2. Cách này trừ -1, -1 vì có commit mới nhất và commit cuối cùng.
      Ví dụ: https://github.com/malisper/pgrust/commits/?after=3646a73515...
    • Không đánh giá. Chỉ còn cách tin rằng việc vượt qua kiểm thử hồi quy có nghĩa là tương thích hoàn toàn với bản gốc
  • Khá ấn tượng, nhưng đây là thay đổi giấy phép từ giấy phép PostgreSQL [0] sang AGPL [1].
    Tôi thích AGPL và nghĩ đó là giấy phép mã nguồn mở tự do thực sự tốt nhất, nhưng tôi lo về tính tương thích. Nếu được viết lại từ mã nguồn gốc thì chẳng phải giấy phép gốc nên được áp dụng sao? Tôi nghĩ là vậy. Đã từng có xu hướng viết lại phần mềm mã nguồn mở dưới giấy phép hạn chế hơn, như Rust coretools. Việc chọn AGPL khiến nó có vẻ đạo đức hơn nhiều, nhưng có lẽ an toàn hơn nếu hoàn toàn không đổi giấy phép?
    [0] https://www.postgresql.org/about/licence/
    [1] https://github.com/malisper/pgrust?tab=AGPL-3.0-1-ov-file

    • Có vẻ bạn đang hiểu ngược chiều mức độ hạn chế. uutils coreutils dùng giấy phép MIT nên ít hạn chế hơn GNU coreutils dùng GPL, còn AGPL thì hạn chế hơn giấy phép PostgreSQL.
      Việc phát hành bản viết lại dưới giấy phép hạn chế hơn không vi phạm giấy phép PostgreSQL. Lý do các giấy phép kiểu MIT ít hạn chế hơn GPL hay AGPL chính là vì chúng cho phép tái cấp phép theo hướng hạn chế hơn
    • Nếu không thích giấy phép đó thì cứ bảo LLM “port” trong vài ngày rồi gắn giấy phép bạn muốn. Có vẻ dạo này người ta làm như vậy
    • Giấy phép PostgreSQL là một biến thể của giấy phép BSD nên tương thích với (A)GPL.
      Có thể hiểu thế này. Bạn tạo một dự án (A)GPL trống rồi đưa codebase BSD upstream vào. Các tệp upstream gốc vẫn giữ giấy phép cho phép ban đầu, nhưng toàn bộ dự án sẽ chịu sự chi phối của (A)GPL, bao gồm cả yêu cầu ghi công của giấy phép upstream. GPL cho phép các yêu cầu như vậy. Sau đó bạn có thể thêm mã của mình dưới AGPL và phân phối tác phẩm kết hợp dưới AGPL.
      Nếu ai đó chỉ lấy phần mã do bạn viết, họ chỉ cần tuân theo AGPL. Nhưng nếu họ cũng bao gồm cả mã nguồn upstream, thì họ vẫn phải tiếp tục đáp ứng yêu cầu ghi công của giấy phép upstream
    • Giấy phép Postgres vốn đã hoàn toàn tương thích với AGPL. BSD/MIT là dạng cấp phép khoan dung hơn.
  • Có 2664 chỗ unsafe { và 1835 chỗ unsafe fn. Như vậy hoàn toàn không an toàn. Trông không giống một bản viết lại có hiểu rõ chuyện gì thực sự đang diễn ra và cần thiết kế lại kiến trúc ra sao để tận dụng được ưu điểm của Rust
    Mà giống một bản chuyển đổi do AI tạo ra dùng con trỏ thô trên diện rộng hơn

    • Phần lớn unsafe bị nhốt trong bộ phân tích cú pháp được tạo ra bằng cách chạy c2rust trên parser của Postgres. Bản thân parser của Postgres cũng được sinh từ yacc/bison, nên người ta đã chọn port một cách máy móc thay vì chuyển sang Rust theo kiểu thành ngữ
      Nếu có chỗ unsafe nào bị xem là đặc biệt nghiêm trọng thì rất mong được chỉ ra
    • Các dự án LLM viết bằng Rust đều đặt unsafe=deny. Không hiểu sao mọi người lại không lường trước phản ứng kiểu này
    • Chỉ cần copy nguyên nhận xét đánh giá này vào prompt là được. Vài tiếng nữa chắc sẽ thành “đã sửa xong!”
  • Có lẽ cần phân biệt rõ giữa viết lại và viết lại bằng AI

    • Ví dụ, bản viết lại TypeScript của Go phần lớn do con người làm và mất 1 năm mới công khai. Đó là cách người ta viết lại phần mềm theo kiểu có thể tạo được niềm tin
    • Có vẻ không đơn giản như vậy. Gần như 100% các dự án mới và đầy tham vọng rồi sẽ dùng AI ở mức độ nào đó. Tôi biết một vài dự án có chính sách cấm AI rất nghiêm như Zig, nhưng đó chỉ là thiểu số rất nhỏ
      Vậy thì phải dùng AI đến mức nào mới được gọi là “viết lại bằng AI”?
    • Viết lại có vẻ là lĩnh vực mà LLM hợp hơn con người. Phần lớn là công việc lặp đi lặp lại đơn giản, và LLM rất hợp với các tác vụ dịch chuyển. Nếu nhớ không nhầm thì kiến trúc transformer ban đầu cũng được phát minh cho dịch máy
    • Viết lại bởi con người mà không có bảo trì thì chỉ là dự án sở thích. Còn viết lại bằng AI thì tôi chẳng hiểu đang đốt token để làm gì
    • Giờ thì nó gần như đã trở thành một bước trong quá trình build
  • Tôi thấy nhiều dự án viết lại kiểu này tuyên bố rằng chúng hoạt động nhờ dựa vào test. Nhưng điều khiến phần mềm như Postgres hay SQLite trở nên đáng tin không hẳn là bản thân test, mà gần hơn với những vết sẹo tích lũy trong môi trường vận hành thực tế
    Độ tin cậy được tích lũy qua nhiều năm chạy ngoài thực tế

    • Phần lớn bộ test đồ sộ đó thực ra chính là những vết sẹo từ vận hành. Mỗi khi xuất hiện bug hay hồi quy, người ta lại viết test để xác nhận hành vi đúng
      SQLite là ví dụ điển hình. Bộ test khổng lồ nhưng không công khai của SQLite thường được nhắc đến như một yếu tố khiến người khác khó fork. Turso đã làm được, nhưng để bảo đảm mức độ cẩn trọng tương đương thì cần có cả một công ty. Và dĩ nhiên cũng cần nhiều năm vận hành thực tế
    • Không hẳn là phán xét về bản viết lại cụ thể này, nhưng test chính là đặc tả cho việc phần mềm phải hoạt động đúng như thế nào. Nếu có hành vi nào chưa được bao phủ bởi test tự động, thì không thể khẳng định một thay đổi cụ thể sẽ không làm hỏng hành vi đó
      Dùng nguyên bộ test hiện có mà không chỉnh sửa để nói rằng một thứ gì đó hoạt động là hoàn toàn hợp lý. Dự án càng lớn thì càng đúng như vậy. Những vết sẹo thu được từ vận hành phải được ghi lại và bảo vệ trong bộ test; nếu không thì bài học đó sẽ biến mất
      SQLite nổi tiếng vì bộ test khổng lồ và fuzzing trên diện rộng. Lượng mã test và script của nó nhiều hơn mã thường tới 590 lần. Nguồn: https://sqlite.org/testing.html
    • Nếu vậy thì nên làm sao để dễ đưa độ tin cậy đó quay ngược về upstream
      Lúc này, việc hữu ích nhất có thể làm với bản chuyển đổi bằng LLM như thế này là: nếu nó vượt qua toàn bộ test gốc, hãy chạy bộ test ứng dụng của tôi trên đó để tìm ra những lỗ hổng trong độ bao phủ test của bản gốc
      Nếu bản chuyển đổi bị crash hoặc có hành vi sai có thể quan sát được, thì điều đó có nghĩa là dự án thật đang thiếu một regression test nào đó. Nếu có thể chạy các dự án chuyển đổi kiểu này một cách an toàn và dễ dàng như một dòng trong ma trận kiểm thử tích hợp hằng ngày, thì upstream sẽ ngăn được tốt hơn nhiều việc vô tình làm hỏng thứ gì đó ở các bản cập nhật sau này
    • Đồng ý. Tôi cũng đồng ý với bình luận bên cạnh rằng mỗi khi xuất hiện bug hay hồi quy thì nên viết test để xác nhận hành vi đúng
      Chỉ là ở các bản viết lại kiểu này, điều tôi không thấy là sẽ xử lý ra sao với những bug mới được đưa vào chính vì việc viết lại. Chẳng phải cuối cùng nó vẫn phải tự mình chịu thử thách trong các kịch bản ngoài đời thực sao?
    • Cũng có cách khác để kiểm chứng bản viết lại. Chỉ cần chạy pgrust và postgres song song rồi so sánh đầu ra là được
      Nếu biết các edge case thì cứ chạy chúng; còn nếu không biết thì có thể dùng fuzzer hay công cụ tự động để tìm đầu vào thú vị. Khi tìm ra khác biệt, cặp đầu vào/đầu ra đó sẽ trở thành test case mới. Tôi không biết đã có công cụ như vậy chưa, nhưng nếu có thì cứ đưa cho Claude để nó nhét vào vòng lặp phát triển
  • Bản demo WebAssembly chạy trong trình duyệt thực sự rất gọn gàng: https://pgrust.com

  • Không hiểu sao lại tiêu cực đến vậy. Mình thấy những dự án kiểu này thú vị vì mục đích học tập và khám phá cách làm mới. Có vấn đề gì với chuyện đó?

    • Có lẽ lý do là thế này. Nó đang dựa vào một tên thương hiệu đã được khẳng định là Postgres + Rust, nhưng lại không có tính thực dụng hay tiến triển gì, đồng thời thiếu độ tin cậy
      Đặc biệt, khi một cái tên mang tín hiệu mạnh như Postgres xuất hiện ngay trong tiêu đề và được đem ra làm điểm nhấn, nhưng lại rõ ràng thiếu tính thực dụng xét về ngắn hạn, dài hạn, niềm tin xã hội hay hiệu ứng mạng lưới, thì có vẻ rất dễ tạo phản cảm
    • Thật khó chịu khi thấy công sức của hàng chục năm bị sao chép dễ dàng như vậy
    • Tôi tự hỏi chính xác thì người ta học được gì từ việc để LLM viết lại nó
    • Có vẻ mọi người cảm thấy bị đe dọa khi thấy LLM làm tốt những việc mà họ tin là cần đến kỹ năng và tài năng của bản thân
      Có thể hiểu được, nhưng đó không phải cảm xúc tiêu cực mang tính xây dựng, cũng không hẳn là rất hợp lý. Chuỗi thảo luận này đầy những bài viết muốn khẳng định rằng thứ này không thể nào là tốt, cũng không nên là tốt, và cuối cùng chắc chắn sẽ kết thúc trong thảm họa. Nhưng việc nó đã vượt qua hàng chục nghìn bài kiểm thử tinh vi được tích lũy suốt nhiều thập kỷ lại cho thấy điều ngược lại. Rất khó phản bác
      Tất nhiên khả năng phát sinh vấn đề mới là cao, nhưng dù vậy đây vẫn là một thành tựu ấn tượng
    • Tôi lo về chất lượng. Chỉ cần lướt qua mã nguồn cũng thấy nó có vẻ ngớ ngẩn. Trừ khi tôi không nhận ra được phần thiên tài trong đoạn mã đó
      https://github.com/malisper/pgrust/blob/3646a73515a5e4ac7d0b...
      https://github.com/malisper/pgrust/blob/3646a73515a5e4ac7d0b...