Theppitak's blog

My personal blog.

01 ธันวาคม 2560

swath 0.6.0

swath 0.6.0 ออกแล้วเมื่อวันก่อน โดยมีลำดับความต่อเนื่องนับจากการปรับพจนานุกรมใน libthai 0.1.27 ดังนี้:

แต่การปรับพจนานุกรมตัดคำก็เป็นแค่น้ำจิ้มสำหรับ swath รุ่นนี้ เพราะมีการปรับซอร์สโค้ดตามที่เคยทำมาต่อไป โดยในครั้งนี้เป็นครั้งแรกที่ล้วงเข้าไปปรับกลไกภายในของการตัดคำ หลังจากที่รุ่นก่อน ๆ ทำแค่ส่วน command line parsing และ input/output filter ต่าง ๆ เท่านั้น

สรุปความเปลี่ยนแปลงที่สำคัญคือ

  • ตัดตัวเลือก -l ซึ่งไม่มีเอกสารอธิบายว่าเอาไว้ทำอะไร
  • refactor dictionary ออกจากตัวตัดคำ ทำให้แยก lifetime ของพจนานุกรมออกจากตัวตัดคำ ซึ่งในอนาคตอาจเรียกตัวตัดคำซ้ำหลายครั้งได้โดยไม่ต้องเปิด dictionary ใหม่ หรือสามารถเรียกตัวตัดคำตัวเดิมซ้ำโดยเปลี่ยน dictionary ได้ เป็นต้น
  • simplify โค้ดของตัวตัดคำให้เข้าใจง่าย ลดความซับซ้อน ตัดส่วนที่ไม่จำเป็น รวมส่วนที่สามารถรวมได้
  • แก้ไขการทำงานของ longest matching scheme ที่เดิมทำงานไม่ถูกต้อง เพราะโค้ดทำงานง่ายเกินเหตุ ไม่มีการ backtrack ทำให้ได้คำตอบผิดพลาดในบางกรณี ในรุ่นนี้ได้แก้ให้ทำงานถูกต้องแล้ว (พร้อม test case สำหรับยืนยัน)
  • จัดระเบียบโค้ดยิบย่อยเพื่อความเป็นระเบียบ (ยังเหลือให้ปรับได้อีกในรุ่นถัด ๆ ไป)
  • ปรับแก้การใช้คำพูดใน manpage พร้อมกับการอ้างถึงโปรแกรม trietool ของ libdatrie แทน trietool-0.2 ซึ่งเป็นชื่อเก่า

ด้วยความเปลี่ยนแปลงขนานใหญ่ในกลไกภายใน จึงได้ปรับเลข minor version แทนที่จะปรับแค่ micro version โดยเปลี่ยนจากซีรีส์ 0.5.x ขึ้นเป็น 0.6.0

ในส่วนของ Debian upload ก็ได้เพิ่ม test suite สำหรับ autopkgtest ในทำนองเดียวกับ libthai ด้วย

ป้ายกำกับ:

hacker emblem