{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,8]],"date-time":"2026-05-08T10:10:57Z","timestamp":1778235057604,"version":"3.51.4"},"publisher-location":"New York, NY, USA","reference-count":45,"publisher":"ACM","license":[{"start":{"date-parts":[[2026,1,21]],"date-time":"2026-01-21T00:00:00Z","timestamp":1768953600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/legalcode"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":[],"published-print":{"date-parts":[[2026,1,21]]},"DOI":"10.1145\/3796315.3796328","type":"proceedings-article","created":{"date-parts":[[2026,5,8]],"date-time":"2026-05-08T09:25:41Z","timestamp":1778232341000},"page":"85-97","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":0,"title":["The Opaque Pointer Design Pattern in Python: Towards a Pythonic PIMPL for Modularity, Encapsulation, and Stability"],"prefix":"10.1145","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-6745-810X","authenticated-orcid":false,"given":"Antonios","family":"Saravanos","sequence":"first","affiliation":[{"name":"New York University, New York, NY, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0009-0001-4866-2236","authenticated-orcid":false,"given":"John","family":"Pazarzis","sequence":"additional","affiliation":[{"name":"Independent Researcher, New York, NY, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0009-0008-8047-6231","authenticated-orcid":false,"given":"Stavros","family":"Zervoudakis","sequence":"additional","affiliation":[{"name":"New York University, New York, NY, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-6547-5600","authenticated-orcid":false,"given":"Dongnanzi","family":"Zheng","sequence":"additional","affiliation":[{"name":"New York University, New York, NY, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2026,5,8]]},"reference":[{"key":"e_1_3_3_1_2_2","unstructured":"Jan Bosch. 1998. Design Patterns as Language Constructs. J. Object-Oriented Program. 11 2 (May 1998) 18\u201332."},{"key":"e_1_3_3_1_3_2","unstructured":"Brett Cannon. 2011. PEP 399 \u2013 Pure Python\/C Accelerator Module Compatibility Requirements. https:\/\/peps.python.org\/pep-0399\/. Accessed December 3 2025."},{"key":"e_1_3_3_1_4_2","volume-title":"Proceedings of C++ at Work \u201989","author":"Carolan John","year":"1989","unstructured":"John Carolan. 1989. Constructing Bullet-Proof Classes. In Proceedings of C++ at Work \u201989. SIGS Publications."},{"key":"e_1_3_3_1_5_2","volume-title":"Advanced C++ Programming Styles and Idioms","author":"Coplien James\u00a0O.","year":"1992","unstructured":"James\u00a0O. Coplien. 1992. Advanced C++ Programming Styles and Idioms. Addison\u2013Wesley, Reading, MA."},{"key":"e_1_3_3_1_6_2","unstructured":"cppreference.com contributors. 2024. PImpl. https:\/\/en.cppreference.com\/w\/cpp\/language\/pimpl. Accessed December 3 2025."},{"key":"e_1_3_3_1_7_2","volume-title":"The Pimpl Pattern \u2013 What You Should Know","author":"Filipek Bartlomiej","year":"2018","unstructured":"Bartlomiej Filipek. 2018. The Pimpl Pattern \u2013 What You Should Know. https:\/\/dzone.com\/articles\/the-pimpl-pattern-what-you-should-know. Accessed December 29, 2025."},{"key":"e_1_3_3_1_8_2","volume-title":"Design Patterns: Elements of Reusable Object-Oriented Software (1st ed.)","author":"Gamma Erich","year":"1994","unstructured":"Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. 1994. Design Patterns: Elements of Reusable Object-Oriented Software (1st ed.). Addison-Wesley, Boston, MA, USA."},{"key":"e_1_3_3_1_9_2","unstructured":"GeeksforGeeks. 2025. Gang of Four (GOF) Design Patterns. https:\/\/www.geeksforgeeks.org\/system-design\/gang-of-four-gof-design-patterns\/. Accessed December 29 2025."},{"key":"e_1_3_3_1_10_2","unstructured":"Ralf Gommers St\u00e9fan van\u00a0der Walt Nathan Goldbaum and Mateusz Sok\u00f3\u0142. 2023. NEP 52 \u2014 Python API Cleanup for NumPy 2.0. https:\/\/numpy.org\/neps\/nep-0052-python-api-cleanup.html. NumPy Enhancement Proposal. Accessed December 29 2025."},{"key":"e_1_3_3_1_11_2","volume-title":"Discussion of the PIMPL idiom in the context of C++ build times","author":"users Hacker News","year":"2024","unstructured":"Hacker News users. 2024. Discussion of the PIMPL idiom in the context of C++ build times. https:\/\/news.ycombinator.com\/item?id=40192673. Accessed December 29, 2025."},{"key":"e_1_3_3_1_12_2","volume-title":"C Interfaces and Implementations: Techniques for Creating Reusable Software","author":"Hanson David\u00a0R.","year":"1997","unstructured":"David\u00a0R. Hanson. 1997. C Interfaces and Implementations: Techniques for Creating Reusable Software. Addison-Wesley Professional, Reading, MA."},{"key":"e_1_3_3_1_13_2","unstructured":"Marcus\u00a0D. Hanwell. 2023. PIMPL Stability and C++ Libraries. https:\/\/cryos.net\/2023\/04\/pimpl-stability-and-c-libraries\/. Blog post. Accessed December 11 2025."},{"key":"e_1_3_3_1_14_2","unstructured":"KDE Community. 2025. Binary Compatibility Issues With C++. https:\/\/community.kde.org\/Policies\/Binary_Compatibility_Issues_With_C%2B%2B Section \u201cUsing a d-Pointer\u201d. Last edited November 5 2025. Accessed December 3 2025."},{"key":"e_1_3_3_1_15_2","unstructured":"Noah Kim. 2025. Inside HRT\u2019s Python Fork: Leveraging PEP 690 for Faster Imports. https:\/\/www.hudsonrivertrading.com\/hrtbeat\/inside-hrts-python-fork\/. Accessed December 3 2025."},{"key":"e_1_3_3_1_16_2","unstructured":"Ivan Levkivskyi. 2017. PEP 562 \u2013 Module __getattr__ and __dir__. https:\/\/peps.python.org\/pep-0562\/. Accessed December 3 2025."},{"key":"e_1_3_3_1_17_2","doi-asserted-by":"publisher","unstructured":"Bradley\u00a0C. Lowekamp David\u00a0T. Chen Luis Ib\u00e1\u00f1ez and Daniel Blezek. 2013. The Design of SimpleITK. Front. Neuroinform. 7 (2013) Article 45. 10.3389\/fninf.2013.00045.Accessed January 15 2026.","DOI":"10.3389\/fninf.2013.00045"},{"key":"e_1_3_3_1_18_2","unstructured":"Germ\u00e1n M\u00e9ndez Bravo and Carl Meyer. 2022. PEP 690 \u2013 Lazy Imports. https:\/\/peps.python.org\/pep-0690\/. Status: Rejected. Accessed December 3 2025."},{"key":"e_1_3_3_1_19_2","volume-title":"Effective C++: 50 Specific Ways to Improve Your Programs and Designs (2nd ed.)","author":"Meyers Scott","year":"1998","unstructured":"Scott Meyers. 1998. Effective C++: 50 Specific Ways to Improve Your Programs and Designs (2nd ed.). Addison-Wesley Professional, Boston, MA."},{"key":"e_1_3_3_1_20_2","unstructured":"Microsoft Corporation. 2025. Pimpl for Compile-Time Encapsulation (Modern C++). https:\/\/learn.microsoft.com\/en-us\/cpp\/cpp\/pimpl-for-compile-time-encapsulation-modern-cpp?view=msvc-170. Accessed December 11 2025."},{"key":"e_1_3_3_1_21_2","unstructured":"NumPy Developers. [n. d.]. Universal functions (ufunc) \u2014 NumPy Documentation. https:\/\/numpy.org\/devdocs\/reference\/ufuncs.html. Accessed December 29 2025."},{"key":"e_1_3_3_1_22_2","unstructured":"NumPy Developers. 2025. Writing custom array containers. https:\/\/numpy.org\/doc\/stable\/user\/basics.dispatch.html. Accessed December 3 2025."},{"key":"e_1_3_3_1_23_2","unstructured":"Tim Ottinger. 2008. Python Pimpl Pattern. https:\/\/agileotter.blogspot.com\/2008\/11\/python-pimpl-pattern.html. Blog post. Accessed December 3 2025."},{"key":"e_1_3_3_1_24_2","unstructured":"pandas Development Team. [n. d.]. Internal API and implementation details. https:\/\/pandas.pydata.org\/docs\/development\/. Accessed January 15 2026."},{"key":"e_1_3_3_1_25_2","unstructured":"Tim Peters. 2004. PEP 20 \u2013 The Zen of Python. https:\/\/peps.python.org\/pep-0020\/. Accessed December 3 2025."},{"key":"e_1_3_3_1_26_2","unstructured":"PyCA Cryptography Contributors. 2025. pyca\/cryptography: src\/cryptography\/hazmat\/primitives\/ciphers\/base.py (main). https:\/\/github.com\/pyca\/cryptography\/blob\/main\/src\/cryptography\/hazmat\/primitives\/ciphers\/base.py Accessed December 29 2025."},{"key":"e_1_3_3_1_27_2","unstructured":"Python Packaging Authority. 2017. Entry Points Specification. https:\/\/packaging.python.org\/specifications\/entry-points\/. Accessed December 3 2025."},{"key":"e_1_3_3_1_28_2","unstructured":"Python Packaging Authority. 2025. Creating and Discovering Plugins. https:\/\/packaging.python.org\/guides\/creating-and-discovering-plugins\/. Accessed December 3 2025."},{"key":"e_1_3_3_1_29_2","unstructured":"Python Software Foundation. 2025. pickle \u2014 Python object serialization. https:\/\/docs.python.org\/3\/library\/pickle.html. Accessed December 3 2025."},{"key":"e_1_3_3_1_30_2","unstructured":"Python Software Foundation. 2025. socket \u2014 Low-level networking interface. https:\/\/docs.python.org\/3\/library\/socket.html. Accessed December 3 2025."},{"key":"e_1_3_3_1_31_2","unstructured":"Python Software Foundation. 2025. xml.etree.ElementTree \u2014 The ElementTree XML API. https:\/\/docs.python.org\/3\/library\/xml.etree.elementtree.html. Accessed December 3 2025."},{"key":"e_1_3_3_1_32_2","unstructured":"Qt Project. 2024. D-Pointer. https:\/\/wiki.qt.io\/D-Pointer Last edited August 28 2024. Accessed December 3 2025."},{"key":"e_1_3_3_1_33_2","unstructured":"Leodanis\u00a0Pozo Ramos. 2025. Python\u2019s __all__: Packages Modules and Wildcard Imports. https:\/\/realpython.com\/python-all-attribute\/. Accessed December 3 2025."},{"key":"e_1_3_3_1_34_2","unstructured":"Leodanis\u00a0Pozo Ramos. 2025. Single and Double Underscores in Python Names. https:\/\/realpython.com\/python-double-underscore\/. Accessed December 3 2025."},{"key":"e_1_3_3_1_35_2","volume-title":"lazy_loader: Populate Library Namespaces Without Incurring Immediate Import Costs","author":"Developers Scientific Python","year":"2024","unstructured":"Scientific Python Developers. 2024. lazy_loader: Populate Library Namespaces Without Incurring Immediate Import Costs. https:\/\/github.com\/scientific-python\/lazy_loader Accessed December 11, 2025."},{"key":"e_1_3_3_1_36_2","unstructured":"SciPy community. 2024. scipy.fft.set_backend \u2014 Set FFT backend. https:\/\/docs.scipy.org\/doc\/scipy-1.14.0\/reference\/generated\/scipy.fft.set_backend.html. Accessed December 3 2025."},{"key":"e_1_3_3_1_37_2","unstructured":"SciPy community. 2025. SciPy API. https:\/\/docs.scipy.org\/doc\/scipy\/reference\/. Accessed December 3 2025."},{"key":"e_1_3_3_1_38_2","volume-title":"Effective Python: 59 Specific Ways to Write Better Python","author":"Slatkin Brett","year":"2015","unstructured":"Brett Slatkin. 2015. Effective Python: 59 Specific Ways to Write Better Python. Addison-Wesley Professional."},{"key":"e_1_3_3_1_39_2","unstructured":"Mateusz Sok\u00f3\u0142. 2023. Refining NumPy\u2019s Python API for its 2.0 release. https:\/\/labs.quansight.org\/blog\/numpy-python-api-cleanup. Accessed December 3 2025."},{"key":"e_1_3_3_1_40_2","unstructured":"Herb Sutter. 1998. The Joy of Pimpls (or More About the Compiler-Firewall Idiom). C++ Rep. 10 7 (July\/August 1998). Reprinted at http:\/\/www.gotw.ca\/publications\/mill05.htm. Accessed December 29 2025."},{"key":"e_1_3_3_1_41_2","unstructured":"Herb Sutter. 1998. Pimpls \u2013 Beauty Marks You Can Depend On. C++ Rep. 10 5 (May 1998). Reprinted at http:\/\/www.gotw.ca\/publications\/mill04.htm. Accessed January 15 2026."},{"key":"e_1_3_3_1_42_2","volume-title":"Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions","author":"Sutter Herb","year":"1999","unstructured":"Herb Sutter. 1999. Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions. Addison-Wesley Professional, Reading, MA."},{"key":"e_1_3_3_1_43_2","volume-title":"GotW #100: Compilation Firewalls","author":"Sutter Herb","year":"2011","unstructured":"Herb Sutter. 2011. GotW #100: Compilation Firewalls. https:\/\/herbsutter.com\/2011\/11\/04\/gotw-100-compilation-firewalls\/. Accessed December 3, 2025."},{"key":"e_1_3_3_1_44_2","unstructured":"St\u00e9fan van\u00a0der Walt Jon Crall Dan Schult and Jarrod Millman. 2021. SPEC 1 \u2013 Lazy Loading of Submodules and Functions. https:\/\/scientific-python.org\/specs\/spec-0001\/. Accessed December 3 2025."},{"key":"e_1_3_3_1_45_2","unstructured":"Guido van Rossum Barry Warsaw and Nick Coghlan. 2001. PEP 8 \u2013 Style Guide for Python Code. https:\/\/peps.python.org\/pep-0008\/. Accessed December 3 2025."},{"key":"e_1_3_3_1_46_2","unstructured":"Wikipedia contributors. 2008. Opaque pointer. https:\/\/en.wikipedia.org\/wiki\/Opaque_pointer. Accessed December 3 2025."}],"event":{"name":"ICSIM 2026: 2026 The 9th International Conference on Software Engineering and Information Management","location":"Yokohama Japan","acronym":"ICSIM 2026"},"container-title":["Proceedings of the 2026 9th International Conference on Software Engineering and Information Management"],"original-title":[],"link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3796315.3796328","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,5,8]],"date-time":"2026-05-08T09:29:18Z","timestamp":1778232558000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3796315.3796328"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2026,1,21]]},"references-count":45,"alternative-id":["10.1145\/3796315.3796328","10.1145\/3796315"],"URL":"https:\/\/doi.org\/10.1145\/3796315.3796328","relation":{},"subject":[],"published":{"date-parts":[[2026,1,21]]},"assertion":[{"value":"2026-05-08","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}