Rust Coreutils 0.4 เผยแพร่: ความแตกต่างใน Du Utility Behavior ใน Uutils และ GNU Coreutils

โครงการ uutils coreutils 0.4.0 (Rust Coreutils) ซึ่งเป็นการพัฒนาต่อยอดจากแพ็กเกจ GNU Coreutils โดยเขียนด้วยภาษา Rust ได้ถูกปล่อยออกมาแล้ว coreutils ประกอบด้วยยูทิลิตี้มากกว่า 100 รายการ รวมถึง sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln และ ls เป้าหมายของโครงการคือการสร้างทางเลือกข้ามแพลตฟอร์มสำหรับ Coreutils ที่สามารถทำงานได้บนแพลตฟอร์มต่างๆ รวมถึง Windowsรีดอกซ์ และฟูเชีย

Rust Coreutils ถูกเปิดใช้งานโดยค่าเริ่มต้นในเวอร์ชันนี้ Ubuntu 25.10 และถูกใช้ในระบบปฏิบัติการ AerynOS (Serpent OS) และ Apertis (พัฒนาโดย Collabora) แตกต่างจาก GNU Coreutils ตรงที่เวอร์ชัน Rust นี้เผยแพร่ภายใต้ใบอนุญาต MIT ที่อนุญาตให้ใช้งานได้อย่างอิสระ แทนที่จะเป็นใบอนุญาต GPL ที่จำกัดสิทธิ์ ทีมพัฒนาเดียวกันนี้ยังพัฒนาโปรแกรมยูทิลิตี้อื่นๆ ที่ใช้ Rust เช่น util-linux, diffutils, findutils และ procps รวมถึงโปรแกรม sed และ login ด้วย

ใน Rust Coreutils เวอร์ชันใหม่:

  • ปรับปรุงความเข้ากันได้กับชุดทดสอบประสิทธิภาพ GNU Coreutils ซึ่งผ่านการทดสอบ 544 ครั้ง มากกว่าเวอร์ชันก่อนหน้า (532) ถึง 12 ครั้ง มีการทดสอบล้มเหลว 56 (68) ครั้ง และข้ามการทดสอบไป 33 (33) ครั้ง อัตราความเข้ากันได้ที่อ้างไว้คือ 85.80% (เดิม 83.91%)
  • ยูทิลิตี้ข้อมูลได้ปรับปรุงความเข้ากันได้กับวันที่ GNU เมื่อจัดการโซนเวลา (เพิ่มความสามารถในการระบุชื่อโซนเวลาแบบย่อในตัวเลือก --set)
  • ยูทิลิตี้ปัจจัยใช้แพ็คเกจ num_prime เพื่อเร่งความเร็วในการแยกตัวประกอบของประเภท u64/u128
  • ในยูทิลิตี้ tsort การนำอัลกอริธึมการท่อง DFS ไปใช้ได้ถูกสลับจากวิธีการเรียกซ้ำไปเป็นวิธีการดำเนินการแบบวนซ้ำเพื่อป้องกันการล้นของสแต็ก
  • ขณะนี้ยูทิลิตี้ cksum รองรับแฮช sha2 และ sha3 แล้ว มีการเพิ่มเกณฑ์มาตรฐานเพื่อติดตามประสิทธิภาพของ cksum ฟังก์ชันการทำงานของ Hashsum ได้ถูกย้ายไปยัง cksum แล้ว
  • แก้ไขการล้นของสแต็กในยูทิลิตี้ mkdir ซึ่งอาจทำให้เกิดความผิดพลาดเมื่อสร้างไดเร็กทอรีซ้อนกันจำนวนมาก (200+)
  • ยูทิลิตี้ stdbuf และ uptime รองรับแพลตฟอร์ม OpenBSD แล้ว
  • ปรับปรุงการสร้างและการทดสอบบนแพลตฟอร์ม FreeBSD
  • มีการปรับปรุงทั่วไปเพื่อปรับปรุงความสามารถในการพกพา
  • ความสามารถที่เพิ่มขึ้น แก้ไขปัญหา และเพิ่มตัวเลือกที่ขาดหายไปสำหรับยูทิลิตี้ base64, cat, chown, chsum, date, dd, du, factor, hashsum, install, ls, mkdir, od, printenv, printf, readlink, stdbuf, timeout, truncate, tsort, uptime, uudoc

นอกจากนี้ ยังสามารถสังเกตเห็นความแตกต่างในพฤติกรรมของยูทิลิตี้ “du” จากชุด uutils และ GNU Coreutils ซึ่งปรากฏขึ้นหลังจากช่วงเปลี่ยนผ่าน Ubuntu 25.10 บน uutils นักพัฒนาซอฟต์แวร์ยังไม่ได้ตัดสินใจว่าจะถือว่าความไม่สอดคล้องกันนี้เป็นบั๊กหรือไม่ เนื่องจากพฤติกรรมของ uutils นั้นเป็นไปตามหลักเหตุผล และชุดทดสอบ GNU Coreutils ก็ไม่พบปัญหาใดๆ อย่างไรก็ตาม ความไม่เข้ากันกับ GNU Coreutils นั้นควรได้รับการพิจารณาว่าเป็นข้อผิดพลาด และพฤติกรรมของ Busybox ก็ตรงกับพฤติกรรมของ GNU Coreutils

จะพบพฤติกรรมที่แตกต่างกันเมื่อระบุหลายไดเรกทอรีเป็นอาร์กิวเมนต์สำหรับยูทิลิตี้ "du" ในกรณีที่ไดเรกทอรีบางไดเรกทอรีเป็นไดเรกทอรีย่อยของไดเรกทอรีอื่น (เช่น /var และ /var/log) Uutils จะแสดงขนาดจริงของแต่ละไดเรกทอรี และแสดงขนาดรวมของไดเรกทอรีทั้งหมดที่ระบุในบรรทัดสรุป GNU Coreutils จะแสดงขนาดดิสก์จริงของไดเรกทอรีที่ระบุในบรรทัดสรุป แต่จะแสดงขนาดของแต่ละไดเรกทอรีแยกกัน ซึ่งทำให้ขนาดของไดเรกทอรีดูเล็กกว่าขนาดจริง นอกจากนี้ ค่าที่แสดงโดย GNU Coreutils และ Busybox จะแตกต่างกันไปตามลำดับที่ระบุไดเรกทอรี

ตัวอย่างเช่น เมื่อตรวจสอบขนาดของไดเร็กทอรี "/var/log" และ "/var" ซึ่งขนาดจริงคือ 1540 และ 35495 ไบต์ GNU Coreutils จะพิมพ์: du -smc /var/log /var 1540 /var/log 33955 /var # น้อยกว่าจริง 35495 รวม du -smc /var /var/log 35495 /var # แสดงเฉพาะ /var และไม่แสดง /var/log 35495 รวม

ใน uutils: du -smc /var/log /var 1540 /var/log 35495 /var 37033 รวม # มากกว่าจริง แต่ตรงกับผลรวมของ /var และ /var/log du -smc /var /var/log 35495 /var 1540 /var/log 37033 รวม # มากกว่าจริง แต่ตรงกับผลรวมของ /var และ /var/log

ใน Busybox: du -smc /var/log /var 1540 /var/log 33955 /var # น้อยกว่าจริง 35495 รวม du -smc /var /var/log 35495 /var # แสดงเฉพาะ /var และไม่แสดง /var/log 35495 รวม

ที่มา: opennet.ru

ซื้อโฮสติ้งที่เชื่อถือได้สำหรับไซต์ที่มีการป้องกัน DDoS เซิร์ฟเวอร์ VPS VDS 🔥 ซื้อบริการเว็บโฮสติ้งที่เชื่อถือได้ พร้อมระบบป้องกัน DDoS และเซิร์ฟเวอร์ VPS/VDS | ProHoster