{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T05:06:11Z","timestamp":1750309571421,"version":"3.41.0"},"reference-count":18,"publisher":"Association for Computing Machinery (ACM)","issue":"6","license":[{"start":{"date-parts":[[2024,12,31]],"date-time":"2024-12-31T00:00:00Z","timestamp":1735603200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Queue"],"published-print":{"date-parts":[[2024,12,31]]},"abstract":"<jats:p>Retrofitting radically new functionality onto production software tests every skill of the programmers craft. A practical case study illuminates principles for bolting new tricks onto old dogs.<\/jats:p>","DOI":"10.1145\/3711673","type":"journal-article","created":{"date-parts":[[2025,1,20]],"date-time":"2025-01-20T23:17:51Z","timestamp":1737415071000},"page":"23-37","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":0,"title":["Retrofitting: Principles and Practice"],"prefix":"10.1145","volume":"22","author":[{"ORCID":"https:\/\/orcid.org\/0009-0006-1607-5674","authenticated-orcid":false,"given":"Terence","family":"Kelly","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Ziheng Aaron","family":"Su","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2025,1,20]]},"reference":[{"key":"e_1_2_1_1_1","unstructured":"Arnold D. N. 2000. The Patriot missile failure; http:\/\/www.ima.umn.edu\/~arnold\/disasters\/patriot.html."},{"key":"e_1_2_1_2_1","volume-title":"Small-data computing: correct calculator arithmetic. Communications of the ACM 60(8), 44?49","author":"Boehm H.-J.","year":"1981","unstructured":"Boehm, H.-J. 2017. Small-data computing: correct calculator arithmetic. Communications of the ACM 60(8), 44?49; https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/ 2911981."},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/3385412.3386037"},{"key":"e_1_2_1_4_1","unstructured":"C23 Standard (draft n3054). https:\/\/www.open-std.org\/jtc1\/sc22\/wg14\/www\/docs\/n3054.pdf."},{"volume-title":"Decimal arithmetic FAQ part 1 - general questions","author":"Cowlishaw M.","key":"e_1_2_1_5_1","unstructured":"Cowlishaw, M. 2007. Decimal arithmetic FAQ part 1 - general questions. IBM Corp.; https:\/\/speleotrove.com\/decimal\/decifaq1.html."},{"key":"e_1_2_1_6_1","unstructured":"CRIU (Checkpoint\/Restore In Userspace); https:\/\/criu.org\/Main_Page."},{"key":"e_1_2_1_7_1","unstructured":"DMTCP (Distributed MultiThreaded Checkpointing); https:\/\/dmtcp.sourceforge.io\/."},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/103162.103163"},{"key":"e_1_2_1_9_1","unstructured":"Hanson D. R. 1997. C Interfaces and Implementations. Addison-Wesley. See page 323 for high-precision price tracking."},{"key":"e_1_2_1_10_1","doi-asserted-by":"crossref","unstructured":"Kelly T. 2021. Crashproofing the original NoSQL data store. acmqueue 18(4); https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3487019.3487353.","DOI":"10.1145\/3487019.3487353"},{"key":"e_1_2_1_11_1","unstructured":"Kelly T. 2022. The pm-gawk user manual. Available at reference [12]. See Section 4.1 for asymptotic efficiency."},{"key":"e_1_2_1_12_1","unstructured":"Kelly T. 2022 pma: A persistent memory allocator; http:\/\/web.eecs.umich.edu\/~tpkelly\/pma\/."},{"key":"e_1_2_1_13_1","doi-asserted-by":"crossref","unstructured":"Kelly T. 2024. Zero tolerance for bias. acmqueue 22(2) 19?38; https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3664645.","DOI":"10.1145\/3664645"},{"key":"e_1_2_1_14_1","doi-asserted-by":"crossref","unstructured":"Kelly T. Tan Z. F. Li J. Volos H. 2022. Persistent memory allocation: Leverage to move a world of software. acmqueue 20(2) 16?30; https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3534855.","DOI":"10.1145\/3534855"},{"key":"e_1_2_1_15_1","unstructured":"Kernighan B. 2024. Personal communication."},{"key":"e_1_2_1_16_1","unstructured":"Nelson P. 2024. GNU bc arbitrary-precision calculator; https:\/\/www.gnu.org\/software\/bc\/."},{"key":"e_1_2_1_17_1","volume-title":"Proceedings of the Non-Volatile Memory Workshop (NVMW); http:\/\/nvmw.ucsd.edu\/nvmw2022-program\/nvmw2022-data\/nvmw2022-paper35-final_version_your_extended_abstract.pdf.","author":"Tan Z. F.","year":"2022","unstructured":"Tan, Z. F., Li, J., Volos, H., Kelly, T. 2022. Persistent scripting. In Proceedings of the Non-Volatile Memory Workshop (NVMW); http:\/\/nvmw.ucsd.edu\/nvmw2022-program\/nvmw2022-data\/nvmw2022-paper35-final_version_your_extended_abstract.pdf."},{"key":"e_1_2_1_18_1","unstructured":"Wikipedia. 2024. grep; https:\/\/en.wikipedia.org\/wiki\/Grep."}],"container-title":["Queue"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3711673","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3711673","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T01:19:15Z","timestamp":1750295955000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3711673"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,12,31]]},"references-count":18,"journal-issue":{"issue":"6","published-print":{"date-parts":[[2024,12,31]]}},"alternative-id":["10.1145\/3711673"],"URL":"https:\/\/doi.org\/10.1145\/3711673","relation":{},"ISSN":["1542-7730","1542-7749"],"issn-type":[{"type":"print","value":"1542-7730"},{"type":"electronic","value":"1542-7749"}],"subject":[],"published":{"date-parts":[[2024,12,31]]},"assertion":[{"value":"2025-01-20","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}