Theppitak's blog

My personal blog.

20 กุมภาพันธ์ 2549

LibThai, ThaiLaTeX

สุดสัปดาห์นี้ ละงานแปล แว้บไปทำงาน programming นิดหน่อย กับ libthai และ Thai LaTeX

สำหรับ libthai ก็เริ่มนับ รุ่นของไลบรารี ซึ่งตรงนี้ ต่างจากรุ่นของแพกเกจที่แบ่งเป็น major.minor.micro แต่เป็นรุ่นที่บ่งบอก ABI โดยเป็นตัวเลขสามตัวในรูป current:revision:age

  • current หมายถึงรุ่นของ API ปัจจุบัน
  • revision หมายถึงรุ่นของการเปลี่ยนแปลงรายละเอียดของโค้ด ภายใต้ API ที่คงที่
  • age หมายถึงจำนวนรุ่นที่ไลบรารี backward compatible

กล่าวคือ ถ้าไลบรารีมีการเพิ่ม ลด หรือเปลี่ยนแปลง API เลข current จะเพิ่มเสมอเมื่อมีการออกรุ่นใหม่ และเลข revision จะถูกเซ็ตเป็นศูนย์ ส่วน age จะเพิ่มถ้า API ใหม่ยัง backward compatible กับ API เก่าอยู่ (กล่าวคือ เป็นการเพิ่ม API ใหม่ โดยไม่แตะต้อง API ชุดเดิม) แต่ถ้ามีการตัดหรือแก้ API เก่า ค่า age จะต้องเซ็ตเป็นศูนย์ เพื่อบ่งบอกว่าไม่ backward compatible อีกต่อไป สังเกตว่า โดยนิยามแล้ว age จะมีค่าไม่เกิน current เสมอ

แต่ถ้าไลบรารีใหม่ไม่มีการแก้ไข API อะไร แต่เป็นการปรับปรุงแก้ไขในส่วน implementation เท่านั้น เลข current และ age จะคงเดิม แต่เลข revision เพิ่ม

ตรงนี้ เป็นข้อกำหนดของไลบรารีแบบ dynamic เพื่อให้โปรแกรมที่ลิงก์กับไลบรารีรุ่นต่างๆ ยังคงสามารถทำงานได้ โดยยอมให้ติดตั้งไลบรารีหลายรุ่นพร้อมกันในระบบ และใช้ตัวเลขสามตัวต่อท้ายชื่อไฟล์ libabc.so.x.y.z โดย x จะเป็นค่า current - age คือเป็นรุ่นที่เก่าที่สุดที่ backward compatible ส่วน y และ z ก็เป็นค่า revision และ age ตามลำดับ ส่วนเลข current, revision, age สามารถดูได้ในไฟล์ libabc.la ถ้าเป็นไลบรารีที่สร้างด้วย libtool

ส่วน thailatex ก็ update source ตาม tetex 3 ซึ่งใน debian ก็ได้มี NMU แก้ thailatex ให้ใช้ได้กับ tetex 3 ลองแกะดูแล้ว เลยได้ไอเดียมาแก้ source สองรายการ คือ

  • เรียก updmap-sys ถ้ามี แทน updmap ปกติ
  • ติดตั้งไฟล์ต่างๆ ลงในตำแหน่งใหม่ ตาม TeX Directory Structure (TDS) ใหม่

รายละเอียดที่เหลือ ดูได้จาก thread ใน tlwg-devel

0 ความเห็น:

แสดงความเห็น (มีการกลั่นกรองสำหรับ blog ที่เก่ากว่า 14 วัน)

<< กลับหน้าแรก

hacker emblem