GNU libmicrohttpd 0.9.74 ได้รับการเผยแพร่แล้วและนี่คือข่าว

เมื่อเร็ว ๆ นี้ โครงการ GNU ได้ออกการเปิดตัวของ เวอร์ชันใหม่ของห้องสมุด libmicrohttpd 0.9.74, การแสดง API อย่างง่ายสำหรับฟังก์ชันเซิร์ฟเวอร์ HTTP ในตัวในแอปพลิเคชัน

ห้องสมุด รองรับโปรโตคอล HTTP 1.1, TLS, การประมวลผลคำขอ POST ที่เพิ่มขึ้น, การรับรองความถูกต้องพื้นฐานและไดเจสต์, IPv6, SHOUTcast และวิธีการต่างๆ สำหรับการเชื่อมต่อมัลติเพล็กซ์ (select, โพล, pthread, เธรดพูล) ในปัจจุบัน การใช้งานได้รองรับแพลตฟอร์มที่รองรับต่างๆ รวมถึง GNU / Linux, FreeBSD, OpenBSD , NetBSD, Solaris, Android , macOS, Win32, Symbian และ z / OS

GNU libmicrohttpd ถือกำเนิดขึ้นเนื่องจากความต้องการของผู้เขียน ซึ่งในขณะนั้นต้องการวิธีง่ายๆ ในการเพิ่มเซิร์ฟเวอร์ HTTP พร้อมกันในโครงการอื่นๆ ทางเลือกที่มีอยู่คือไม่ฟรี ไม่กลับเข้ามาใหม่ ทำงานแบบสแตนด์อโลน คุณภาพของโค้ดแย่มาก หรือใช้ร่วมกัน

จากลักษณะ ที่โดดเด่นในการใช้งานนี้:

  • ห้องสมุด C: เร็วและเล็ก
  • API นั้นเรียบง่าย แสดงออกได้ชัดเจน และย้อนกลับได้อย่างสมบูรณ์
  • การใช้งานเป็นไปตามข้อกำหนด HTTP 1.1
  • เซิร์ฟเวอร์ HTTP สามารถฟังได้หลายพอร์ต
  • โหมดการทำเธรดหลายโหมด: รันบน Application Thread, Internal Thread, Thread Pool และ Thread Per Connection
  • สามโหมดการสำรวจซ็อกเก็ตที่แตกต่างกัน: เลือก (), โพล () และ epoll
  • จำนวนการเรียกระบบขั้นต่ำเพื่อหลีกเลี่ยงการเปลี่ยนแปลงเคอร์เนล / โหมดผู้ใช้เพิ่มเติม
  • แพลตฟอร์มที่รองรับ ได้แก่ GNU / Linux, FreeBSD, OpenBSD, NetBSD, Android, Darwin (macOS), W32, OpenIndiana /
  • Solaris และ z / OS
  • รองรับ IPv6
  • สนับสนุน SHOUTcast
  • รองรับการประมวลผลข้อมูล POST ที่เพิ่มขึ้น (ไม่บังคับ)
  • รองรับการรับรองความถูกต้องพื้นฐานและโดยนัย (ไม่บังคับ)
  • รองรับ TLS (ต้องใช้ libgnutls หรือไม่ก็ได้)
  • ไบนารีเป็นเพียงประมาณ 32k (ไม่รองรับ TLS และคุณสมบัติเสริมอื่น ๆ )

คุณสมบัติใหม่หลักของ libmicrohttpd 0.9.74

ในเวอร์ชันใหม่นี้ที่นำเสนอจากไลบรารี่เราจะพบว่า เพิ่มการใช้งานทดลองของโปรโตคอล WebSockets ซึ่งยังไม่ผ่านการทดสอบอย่างดีและถูกปิดใช้งานโดยค่าเริ่มต้น

ความแปลกใหม่อีกอย่างที่นำเสนอก็คือ การปฏิบัติตามข้อกำหนดการใช้งานโปรโตคอล HTTP 1.0 / 1.1 ได้รับการปรับปรุงนอกจากนี้ โค้ดยังได้รับการปรับปรุงใหม่เพื่อถอดรหัสคำขอที่กระจัดกระจาย

นอกจากนี้ยังมีการเน้นย้ำว่า เพิ่มโค้ดเพื่อส่งคืนข้อผิดพลาดที่เกี่ยวข้องกับคำขอที่ไม่ดีโดยอัตโนมัติ ขนาดข้อมูลใหญ่เกินไปและการตั้งค่าส่วนหัวความยาวเนื้อหาไม่ถูกต้อง

มันได้รับรู้แล้ว การเพิ่มประสิทธิภาพภายใน ตัวอย่างเช่น ปรับปรุงการจัดการหน่วยความจำ ปรับปรุงประสิทธิภาพแฮช และกำจัดการแยกวิเคราะห์ซ้ำๆ ของวิธี HTTP และเวอร์ชันโปรโตคอล

และยังตั้งข้อสังเกตอีกว่าได้ให้การตรวจสอบค่าส่วนหัว HTTP ที่เข้มงวดยิ่งขึ้น อนุญาตให้ใช้อักขระแท็บในค่าส่วนหัวของการตอบกลับ แต่ห้ามใช้ช่องว่างในค่าส่วนหัวที่กำหนดเอง

นอกเหนือจากนั้น, โค้ดสำหรับสร้างส่วนหัว HTTP เพื่อตอบสนองถูกเขียนใหม่ทั้งหมด และความแม่นยำในการหมดเวลาเพิ่มขึ้นจากวินาทีเป็นมิลลิวินาที

เพิ่มตัวเลือกการสร้าง –enable-sanitizers [= address, undefined, leak, user-poison] เพื่อเลือกเปิดใช้งานโหมดการตรวจจับปัญหาในโค้ด

แก้ไข ชี้แจง ขยาย และปรับปรุงคำอธิบายของคุณสมบัติ Doxy โดยกล่าวถึงว่าการเรียนรู้ MHD ควรจะง่ายกว่ามากเพียงแค่อ่านส่วนหัว

การเปลี่ยนแปลงอื่น ๆ ที่โดดเด่นในเวอร์ชันใหม่นี้:

  • ปรับปรุงคำอธิบายฟังก์ชันในไฟล์ส่วนหัว microhttpd.h
  • ฟังก์ชัน API เพิ่ม MHD_get_reason_phrase_len_for () และ MHD_create_response_from_buffer_with_free_callback_cls () ธง MHD_CONNECTION_INFO_HTTP_STATUS, MHD_get_connection_info () เช่นเดียวกับการตอบสนอง MHD_CONNECTION_INFO_HTTP_STATUS ธงและการตอบสนอง MHD_SDRIVE_HDRFKE_HDR_HDRF_HDR_HDRF_HDRF_REND_HDRF_HDRF_REND_HDRF_HDR_RF_RF_HDR_RF_HDRF_
  • เพิ่มไฟล์โครงการสำหรับการประกอบใน MSVC
  • การสร้างส่วนหัวของการตอบสนองถูกเขียนใหม่ทั้งหมด การใช้งานใหม่นี้มีประสิทธิภาพมากขึ้น บำรุงรักษาและขยายได้ง่ายขึ้น และปฏิบัติตามข้อกำหนด RFC HTTP ได้ดีขึ้น
  • การปรับปรุงประสิทธิภาพ: ตอนนี้เวอร์ชัน HTTP และวิธีการขอจะถูกถอดรหัสเพียงครั้งเดียว (ก่อนหน้านี้ MHD ใช้การเปรียบเทียบสตริงจำนวนมาก

ในที่สุด หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติม เกี่ยวกับรุ่นนี้ คุณสามารถดูคู่มือผู้ใช้และข้อมูลอื่น ๆ บนเว็บไซต์ได้

ลิงค์คือนี่


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา