
How Xlib Is Implemented (And What We're Doing About It) Jamey Sharp Computer Science Department Portland State University Portland, OR USA 97207-0751 [email protected] http://xcb.freedesktop.org X Window System Architecture Client Client Client Server Toolkit I18N Protocol Utility Protocol Xlib Transport Transport Xlib Architecture Transport layer: conveys requests and re- sponses between client and server Protocol layer: constructs requests and un- packs replies Utilities layer: does everything else utility cut buffers gc image icccm i18n xlc resource db cms xkb region xom xim core protocol events protocol transport Some Xlib Issues Xlib Component Sizes Large size Inflexible code Unpredictable transport behavior core protocol cms Excessive la- xkb xom tency xlc Confusing xim other thread support Starting Over: XCB Simpler, smaller implementation Focus on transport, protocol New domain-specific language for X proto- col description provides flexibility maintainability Xlib XCB 0 50 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850 Kilobytes of code, compiled for Intel x86 Porting Xlib to XCB Goal: provide a migration path for Xlib- based applications and libraries First try: XCL Idea: re-implement Xlib's API from scratch using XCB Problem: Xlib's API is huge Current approach: start migration at bottom Replace transport and locking with XCB Prototype implemented in a few days! Slowly migrate protocol layer to XCB Results X Test Suite and real workloads confirm substantial correctness; some bugs remain Locking and transport are simpler and smaller; protocol port not yet complete Xlib extensions protocol Xlib/ XCB transport locking 0 25 50 75 100 125 Kilobytes of code, compiled for Intel x86 Any changes in performance are impercep- tible Other Xlib Projects Xlib Component Sizes Redesigning oth- er Xlib compo- nents transport cms core protocol cms xkb xkb xom xom/xlc/xim xlc xim other Conclusion Installed size of X client libraries are re- duced significantly Clarity, maintainability, and extensibility are improved as well Acknowledgements Keith Packard helped us comprehend Xlib and the X Window System. Prof. Bart Massey guides the design and implementation of XCB. Jim Gettys' continued support of this effort is greatly appreciated. Portland State University students Sheridan Mahoney and Mick Thomure provided valuable feedback on the current paper. USENIX Availability XCB: http://xcb.freedesktop.org/ Xlib: http://freedesktop.org/Software/X11.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages11 Page
-
File Size-