อ่าน 3 นาที
กะล่อน
GLib คือชุด ไลบรารี ระบบระดับต่ำสามชุด (เดิมมีห้าชุด) ที่เขียนด้วยภาษา C และพัฒนาขึ้นโดย GNOME เป็นหลัก โค้ดของ GLib แยกออกจาก GTK...
กะล่อน
| กะล่อน | |
|---|---|
| ผู้เขียนต้นฉบับ | ฌอน อามุนด์สัน |
| นักพัฒนา | โครงการ GNOMEและคณะ |
| ปล่อย | 1998 |
| เวอร์ชันเสถียร | 2.88.1 [ 1 ] |
| เขียนเป็น | ซี |
| ระบบปฏิบัติการ | ลินุกซ์ , ระบบปฏิบัติการคล้ายยูนิกส์ , มอสซาเรลล่า , วินโดวส์ |
| แพลตฟอร์ม | ข้ามแพลตฟอร์ม |
| พิมพ์ | ห้องสมุด |
| ใบอนุญาต | LGPLv2.1 |
| เว็บไซต์ | www.gtk.org |
| ที่เก็บข้อมูล |
|

GLib คือชุด ไลบรารี ระบบระดับต่ำสามชุด (เดิมมีห้าชุด) ที่เขียนด้วยภาษาCและพัฒนาขึ้นโดยGNOMEเป็นหลัก โค้ดของ GLib แยกออกจากGTKดังนั้นจึงสามารถใช้งานได้กับซอฟต์แวร์อื่นนอกเหนือจาก GNOME และได้รับการพัฒนาควบคู่กันมาโดยตลอด
ชื่อ "GLib" มีที่มาจากจุดเริ่มต้นของโครงการที่เป็นไลบรารียูทิลิตี้ GTK C
คุณสมบัติ
GLib มีโครงสร้างข้อมูลขั้นสูง เช่น หน่วยความจำแบบกลุ่ม (memory chunks), รายการเชื่อมโยง แบบสองทางและทางเดียว (doubly and singlely linked lists) , ตารางแฮช (hash table ), สตริงแบบไดนามิกและยูทิลิตี้สตริง เช่น ตัวสแกนคำศัพท์ ( lexical scanner), กลุ่มสตริง (กลุ่มของสตริง), อาร์เรย์แบบไดนามิก (dynamic arrays ) , ต้นไม้ไบนารีแบบสมดุล (balanced binary trees ) , ต้นไม้ N-ary (N-ary trees) , ควาร์ก (quarks) (การเชื่อมโยงสองทางระหว่างสตริงและตัวระบุจำนวนเต็มที่ไม่ซ้ำกัน), รายการข้อมูลแบบมีคีย์ (keyed data lists), ความสัมพันธ์ (relations) และทูเปิล (tuples ) แคชช่วยจัดการหน่วยความจำ
GLib มีฟังก์ชันที่รองรับการทำงานแบบเธรดการเขียนโปรแกรมเธรด และสิ่งอำนวยความสะดวกที่เกี่ยวข้อง เช่น การเข้าถึงตัวแปรพื้นฐานมิวเท็กซ์คิว แบบอะซิง โครนัส พูลหน่วยความจำที่ปลอดภัยการส่งข้อความและการบันทึกฟังก์ชันฮุก (การลงทะเบียนเรียกกลับ) และตัวจับเวลานอกจากนี้ GLib ยังมีสิ่งอำนวยความสะดวกในการส่งข้อความ เช่นการแปลงลำดับไบต์และช่องทาง I/O ด้วย
คุณสมบัติอื่นๆ ของ GLib ได้แก่:
- มาโครมาตรฐาน
- คำเตือนและการยืนยัน
- การโหลดโมดูล แบบไดนามิก
ส่วนประกอบ
แพ็กเกจ GLib ประกอบด้วยไลบรารีห้าชุด แต่ทั้งหมดได้ถูกรวมเข้าเป็นไลบรารีเดียวตั้งแต่นั้นมา โดยใช้ชื่อว่าGLib เฉยๆ และไม่มีการพัฒนาเป็นไลบรารีแยกต่างหากอีกต่อไป ไลบรารีเดิมมีดังนี้:
ในจำนวนนี้ มีสามส่วนที่ยังคงอยู่ในไดเร็กทอรีย่อยที่แตกต่างกันของโครงสร้างซอร์สโค้ด ดังนั้นจึงสามารถมองได้ว่าเป็นส่วนประกอบที่แยกจากกัน ได้แก่ GLib, GObject และ GIO โดยอาจมองได้ว่าเป็นซอฟต์แวร์แบบเรียงซ้อน: GObject อาศัย GLib และ GIO ให้ฟังก์ชันการทำงานระดับสูงกว่าที่ใช้ทั้งสองอย่าง
โปรแกรมสำหรับไลบรารี GLib
โดยปกติแล้ว ยูทิลิตี้แบบบรรทัดคำสั่งที่เกี่ยวข้องกับ GLib จะถูกบรรจุแยกต่างหากในไฟล์ libglib2.0-bin:
- – สำหรับการเริ่มต้นแอปพลิเคชันผ่านการเปิดใช้งาน D-Bus
- – สำหรับการทำงานกับอ็อบเจ็กต์ D-Bus และการตรวจสอบสถานะของบัส
- – โปรแกรมจัดการไฟล์ที่สามารถทำงานร่วมกับระบบไฟล์เสมือน GIO ได้
- – สำหรับการแตกไฟล์จากไฟล์รูปแบบไบนารี (*.gresource) และไฟล์ปฏิบัติการ
- – สำหรับตรวจสอบและแก้ไขการตั้งค่าแอปพลิเคชัน
- – สำหรับการอัปเดตแคชที่ GLib ใช้ภายใน
- – สำหรับการอัปเดตแคชที่ GLib ใช้ภายใน
ประวัติศาสตร์
GLib เริ่มต้นจากการเป็นส่วนหนึ่งของ โครงการ GTK+ซึ่งปัจจุบันเปลี่ยนชื่อเป็น GTK แล้ว อย่างไรก็ตาม ก่อนที่จะปล่อย GTK+ เวอร์ชัน 2 นักพัฒนาโครงการได้ตัดสินใจแยกโค้ดส่วนที่ไม่เกี่ยวข้องกับส่วนติดต่อผู้ใช้แบบกราฟิก (GUI) ออกจาก GTK+ จึงได้สร้าง GLib ขึ้นมาเป็นชุดซอฟต์แวร์แยกต่างหาก GLib ถูกปล่อยออกมาเป็นไลบรารีแยกต่างหาก เพื่อให้นักพัฒนาคนอื่นๆ ที่ไม่ได้ใช้ส่วนที่เกี่ยวข้องกับ GUI ของ GTK+ สามารถใช้ส่วนที่ไม่ใช่ GUI ของไลบรารีได้โดยไม่ต้องพึ่งพาไลบรารี GUI ทั้งหมด
เนื่องจาก GLib เป็น ไลบรารี ข้ามแพลตฟอร์ม แอปพลิเคชันที่ใช้ GLib ในการเชื่อมต่อกับระบบปฏิบัติการจึงมักพกพาได้บนระบบปฏิบัติการต่างๆ โดยไม่ต้องเปลี่ยนแปลงครั้งใหญ่[ 2 ]
การเผยแพร่
Glib กำลังอยู่ระหว่างการพัฒนาอย่างต่อเนื่อง สำหรับภาพรวมล่าสุด โปรดดูที่https://gitlab.gnome.org/GNOME/glib/-/blob/main/NEWSตารางด้านล่างแสดงบันทึกการแก้ไขที่สำคัญตั้งแต่ปี 1998 ถึง 2025
| ชุดวางจำหน่าย | วันที่วางจำหน่าย ครั้งแรก | การปรับปรุงที่สำคัญ |
|---|---|---|
| GLib 1.x | ||
| 1.1 | 12 กันยายน 1998 | |
| 1.2 | 27 กุมภาพันธ์ 1999 | |
| 1.3 | 25 กันยายน 2544 | |
| GLib 2.x | ||
| 2.0 | 8 มีนาคม 2545 | |
| 2.24 | 26 มีนาคม 2553 | GVariant, GConverted |
| 2.26 | 27 กันยายน 2553 | การผูกคุณสมบัติ GSettings , GDbus, GObject (GAtomic สำหรับการนับอ้างอิง) |
| 2.30 | 26 กันยายน 2011 | GApplications ที่ไม่ซ้ำกัน ใช้eventfd()สำหรับการปลุก mainloop การเพิ่มประสิทธิภาพชุด GHashTable ความสามารถในการปรับขนาดข้อมูล GObject |
| 2.32 | 24 มีนาคม 2555 | แผนสำหรับ GLib 2.32 |
| 2.34 | 23 กันยายน 2555 | มีอะไรใหม่สำหรับนักพัฒนาใน GLib 2.34 บ้าง |
| 2.36 | 25 มีนาคม 2556 | |
| 2.38 | 23 กันยายน 2556 | แอปพลิเคชันที่เปิดใช้งานโดยใช้การเปิด ใช้งาน D-Bus [ 3 ] GSubprocess, Unicode 6.3 (เผยแพร่เมื่อเดือนกันยายน 2013) |
| 2.40 | 24 มีนาคม 2557 | GNotification, API การแจ้งเตือนระบบ[ 4 ] |
| 2.42 | 22 กันยายน 2014 | |
| 2.43 | 27 ตุลาคม 2557 | |
| 2.44 | 23 มีนาคม 2558 | |
| 2.45 | 30 เมษายน 2558 | |
| 2.46 | 21 กันยายน 2015 | |
| 2.47 | 26 ตุลาคม 2558 | |
| 2.48 | 22 มีนาคม 2559 | |
| 2.50 | 19 กันยายน 2559 | |
| 2.52 | 19 มีนาคม 2560 | |
| 2.53 | 25 เมษายน 2560 | |
| 2.54 | 8 มกราคม 2018 | |
| 2.55 | 2018-02-06 | |
| 2.56 | 12 มีนาคม 2018 | |
| 2.57 | 5 พฤษภาคม 2561 | |
| 2.58 | 30 สิงหาคม 2561 | |
| 2.59 | 23 ธันวาคม 2018 | |
| 2.60 | 4 มีนาคม 2019 | |
| 2.61 | 15 เมษายน 2562 | |
| 2.62 | 5 กันยายน 2019 | |
| 2.63 | 4 ตุลาคม 2562 | |
| 2.64 | 27 กุมภาพันธ์ 2020 | |
| 2.65 | 18 มิถุนายน 2020 | |
| 2.66 | 2020-09-10 | |
| 2.67 | 23 ตุลาคม 2020 | |
| 2.68 | 18 มีนาคม 2021 | |
| 2.69 | 2021-07-06 | |
| 2.70 | 17 กันยายน 2021 | |
| 2.71 | 16 ธันวาคม 2021 | |
| 2.72 | 17 มีนาคม 2022 | |
| 2.73 | 27 พฤษภาคม 2022 | |
| 2.74 | 17 กันยายน 2022 | |
| 2.75 | 10 พฤศจิกายน 2022 | |
| 2.76 | 2023-03-10 | |
| 2.77 | 2023-07-06 | |
| 2.78 | 8 กันยายน 2023 | |
| 2.79 | 22 ธันวาคม 2023 | |
| 2.80 | 2024-03-07 | |
| 2.81 | 28 มิถุนายน 2024 | |
| 2.82 | 26 สิงหาคม 2024 | |
| 2.83 | 2024-11-06 | |
| 2.84 | 2025-03-06 | |
| 2.85 | 2025-05-20 | |
| 2.86 | 5 กันยายน 2025 | |
| 2.87 | 3 พฤศจิกายน 2025 | |
| 2.88 | 16 มีนาคม 2026 | |
โครงการที่คล้ายกัน
ไลบรารีอื่นๆ มีฟังก์ชันระดับต่ำและการใช้งานโครงสร้างข้อมูลต่างๆ รวมถึง:
- Microsoft Foundation Class Library (MFC) – ไลบรารีC++ แบบเชิงวัตถุที่เป็นตัว ห่อหุ้ม API ของ Windowsที่ใช้ภาษา C ซึ่งรวมถึงโครงสร้างข้อมูลและฟังก์ชันอำนวยความสะดวกอื่นๆ ด้วย
- Standard Template Library (STL) – ไลบรารี C++ สำหรับโครงสร้างข้อมูลและอัลกอริทึม
- Boost – มีฟังก์ชันบางอย่างสำหรับ C++ เช่น ฟังก์ชันพื้นฐานสำหรับการทำงานแบบมัลติเธรด คล้ายกับที่ GLib ทำสำหรับ C
- QtCore – API หลักของเฟรมเวิร์ก Qt
- wxBase – ฟังก์ชันที่ไม่เกี่ยวข้องกับ GUI ของไลบรารีwxWidgets
- Apache Portable Runtimeและ Apple Core Foundationมีฟังก์ชันการทำงานที่ทับซ้อนกันอย่างมากกับ GLib และมีฟังก์ชันการทำงานด้านมัลติเธรด เครือข่าย และโครงสร้างข้อมูลที่ใช้งานได้บนระบบปฏิบัติการต่างๆ มากมายในภาษา C
- Gnulib - ไลบรารีสำหรับการพกพาของ GNU
ลิงก์ภายนอก
- เอกสารประกอบ API ของ GLib
- GLib Git Source Tree
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ กะล่อน
GLib คือชุด ไลบรารี ระบบระดับต่ำสามชุด (เดิมมีห้าชุด) ที่เขียนด้วยภาษา C และพัฒนาขึ้นโดย GNOME เป็นหลัก โค้ดของ GLib แยกออกจาก GTK...
คุณสมบัติ
GLib มีโครงสร้างข้อมูลขั้นสูง เช่น หน่วยความจำแบบกลุ่ม (memory chunks), รายการเชื่อมโยง แบบสองทางและทางเดียว (doubly and singlely linked lists) , ตารางแฮช (hash table ), สตริง แบบไดนามิกและยูทิลิตี้สตริง เช่น ตัวสแกนคำศัพท์ ( lexical scanner), กลุ่มสตริง...
ส่วนประกอบ
แพ็กเกจ GLib ประกอบด้วยไลบรารีห้าชุด แต่ทั้งหมดได้ถูกรวมเข้าเป็นไลบรารีเดียวตั้งแต่นั้นมา โดยใช้ชื่อว่า GLib เฉยๆ และไม่มีการพัฒนาเป็นไลบรารีแยกต่างหากอีกต่อไป ไลบรารีเดิมมีดังนี้:
โปรแกรมสำหรับไลบรารี GLib
โดยปกติแล้ว ยูทิลิตี้แบบบรรทัดคำสั่งที่เกี่ยวข้องกับ GLib จะถูกบรรจุแยกต่างหากในไฟล์ libglib2.0-bin: