{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,12,24]],"date-time":"2025-12-24T12:43:46Z","timestamp":1766580226695,"version":"3.41.0"},"reference-count":42,"publisher":"Association for Computing Machinery (ACM)","issue":"6","license":[{"start":{"date-parts":[[2005,11,1]],"date-time":"2005-11-01T00:00:00Z","timestamp":1130803200000},"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":["ACM Trans. Program. Lang. Syst."],"published-print":{"date-parts":[[2005,11]]},"abstract":"<jats:p>\n            Many important applications must run continuously and without interruption, and yet also must be changed to fix bugs or upgrade functionality. No prior general-purpose methodology for dynamic updating achieves a practical balance between flexibility, robustness, low overhead, ease of use, and low cost.We present an approach for C-like languages that provides type-safe dynamic updating of native code in an extremely flexible manner---code, data, and types may be updated, at programmer-determined times---and permits the use of automated tools to aid the programmer in the updating process. Our system is based on\n            <jats:italic>dynamic patches<\/jats:italic>\n            that contain both the updated code and the code needed to transition from the old version to the new. A novel aspect of our patches is that they consist of\n            <jats:italic>verifiable native code<\/jats:italic>\n            (e.g. Proof-Carrying Code or Typed Assembly Language), which is native code accompanied by annotations that allow online verification of the code's safety. We discuss how patches are generated mostly automatically, how they are applied using dynamic-linking technology, and how code is compiled to make it updateable.To concretely illustrate our system, we have implemented a dynamically updateable web server, FlashEd. We discuss our experience building and maintaining FlashEd, and generalize to present observations about updateable software development. Performance experiments show that for FlashEd, the overhead due to updating is low: typically less than 1 percent.\n          <\/jats:p>","DOI":"10.1145\/1108970.1108971","type":"journal-article","created":{"date-parts":[[2006,2,6]],"date-time":"2006-02-06T15:07:09Z","timestamp":1139238429000},"page":"1049-1096","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":131,"title":["Dynamic software updating"],"prefix":"10.1145","volume":"27","author":[{"given":"Michael","family":"Hicks","sequence":"first","affiliation":[{"name":"University of Maryland, College Park, MD"}]},{"given":"Scott","family":"Nettles","sequence":"additional","affiliation":[{"name":"The University of Texas at Austin, Austin, TX"}]}],"member":"320","published-online":{"date-parts":[[2005,11]]},"reference":[{"key":"e_1_2_1_1_1","unstructured":"Apache. 2001. The Apache Software Foundation. http:\/\/www.apache.org.]]  Apache. 2001. The Apache Software Foundation. http:\/\/www.apache.org.]]"},{"key":"e_1_2_1_2_1","unstructured":"Appel A. 1994. Hot-sliding in ML. Unpublished manuscript. http:\/\/www.cs.princeton.edu\/~appel\/papers\/hotslide.ps.]]  Appel A. 1994. Hot-sliding in ML. Unpublished manuscript. http:\/\/www.cs.princeton.edu\/~appel\/papers\/hotslide.ps.]]"},{"key":"e_1_2_1_3_1","unstructured":"Armstrong J. Virding R. Wikstrom C. and Williams M. 1996. Concurrent Programming in Erlang Second ed. Prentice-Hall Englewood Cliffs N.J.]]   Armstrong J. Virding R. Wikstrom C. and Williams M. 1996. Concurrent Programming in Erlang Second ed. Prentice-Hall Englewood Cliffs N.J.]]"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/288235.288261"},{"volume-title":"Proceedings of the 2nd International Workshop on Unanticipated Software Evolution","author":"Bierman G.","key":"e_1_2_1_5_1","unstructured":"Bierman , G. , Hicks , M. , Sewell , P. , and Stoyle , G . 2003. Formalizing dynamic software updating . In Proceedings of the 2nd International Workshop on Unanticipated Software Evolution . Warsaw, Poland (April).]] Bierman, G., Hicks, M., Sewell, P., and Stoyle, G. 2003. Formalizing dynamic software updating. In Proceedings of the 2nd International Workshop on Unanticipated Software Evolution. Warsaw, Poland (April).]]"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1049\/sej.1993.0001"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/949305.949341"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1177\/109434200001400404"},{"key":"e_1_2_1_10_1","volume-title":"Proceedings of the Workshop on Engineering Complex Object-Oriented Systems for Evolution","author":"Dmitriev M.","year":"2001","unstructured":"Dmitriev , M. 2001 . Towards flexible and safe technology for runtime evolution of Java language applications . In Proceedings of the Workshop on Engineering Complex Object-Oriented Systems for Evolution . Portland, OR. (Oct.). 14--18.]] Dmitriev, M. 2001. Towards flexible and safe technology for runtime evolution of Java language applications. In Proceedings of the Workshop on Engineering Complex Object-Oriented Systems for Evolution. Portland, OR. (Oct.). 14--18.]]"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/507635.507645"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1016\/0164-1212(91)90096-O"},{"volume-title":"Proceedings of the 3rd Symposium on Operating Systems Design and Implementation","author":"Gamsa B.","key":"e_1_2_1_13_1","unstructured":"Gamsa , B. , Krieger , O. , Appavoo , J. , and Stumm , M . 1999. Tornado: Maximizing locality and concurrency in a shared memory multiprocessor operating system . In Proceedings of the 3rd Symposium on Operating Systems Design and Implementation . New Orleans, LA. (Feb.). 87--100.]] Gamsa, B., Krieger, O., Appavoo, J., and Stumm, M. 1999. Tornado: Maximizing locality and concurrency in a shared memory multiprocessor operating system. In Proceedings of the 3rd Symposium on Operating Systems Design and Implementation. New Orleans, LA. (Feb.). 87--100.]]"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/24208.24227"},{"key":"e_1_2_1_15_1","volume-title":"Tech. Rep. ECS-LFCS-97-378, Laboratory for the Foundations of Computer Science","author":"Gilmore S.","year":"1997","unstructured":"Gilmore , S. , Kirli , D. , and Walton , C . 1997 . Dynamic ML without Dynamic Types . Tech. Rep. ECS-LFCS-97-378, Laboratory for the Foundations of Computer Science , The University of Edinburgh . December.]] Gilmore, S., Kirli, D., and Walton, C. 1997. Dynamic ML without Dynamic Types. Tech. Rep. ECS-LFCS-97-378, Laboratory for the Foundations of Computer Science, The University of Edinburgh. December.]]"},{"key":"e_1_2_1_16_1","volume-title":"Proceedings of the ACM SIGPLAN Workshop on Types in Compilation","volume":"2071","author":"Grossman D.","unstructured":"Grossman , D. and Morrisett , G . 2000. Scalable certification for Typed Assembly Language . In Proceedings of the ACM SIGPLAN Workshop on Types in Compilation . Montreal, Canada. R. Harper, Ed. Lecture Notes in Computer Science , vol. 2071 . Springer-Verlag, New York. 117--146.]] Grossman, D. and Morrisett, G. 2000. Scalable certification for Typed Assembly Language. In Proceedings of the ACM SIGPLAN Workshop on Types in Compilation. Montreal, Canada. R. Harper, Ed. Lecture Notes in Computer Science, vol. 2071. Springer-Verlag, New York. 117--146.]]"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380230903"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1109\/32.485222"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/378795.378798"},{"key":"e_1_2_1_22_1","volume-title":"Proceedings of the ACM SIGPLAN Workshop on Types in Compilation","volume":"2071","author":"Hicks M.","unstructured":"Hicks , M. , Weirich , S. , and Crary , K . 2000. Safe and flexible dynamic linking of native code . In Proceedings of the ACM SIGPLAN Workshop on Types in Compilation . Montreal, Canada. R. Harper, Ed. Lecture Notes in Computer Science , vol. 2071 . Springer-Verlag, New York. 147--176.]] Hicks, M., Weirich, S., and Crary, K. 2000. Safe and flexible dynamic linking of native code. In Proceedings of the ACM SIGPLAN Workshop on Types in Compilation. Montreal, Canada. R. Harper, Ed. Lecture Notes in Computer Science, vol. 2071. Springer-Verlag, New York. 147--176.]]"},{"volume-title":"Proceedings of the USENIX Annual Technical Conference","author":"Hj\u00e1lmt\u00fdsson G.","key":"e_1_2_1_23_1","unstructured":"Hj\u00e1lmt\u00fdsson , G. and Gray , R . 1998. Dynamic C&plus;&plus; classes, a lightweight mechanism to update code in a running program . In Proceedings of the USENIX Annual Technical Conference . New Orelands, LA. 65--76.]] Hj\u00e1lmt\u00fdsson, G. and Gray, R. 1998. Dynamic C&plus;&plus; classes, a lightweight mechanism to update code in a running program. In Proceedings of the USENIX Annual Technical Conference. New Orelands, LA. 65--76.]]"},{"key":"e_1_2_1_25_1","unstructured":"Java 2002. The Java HotSpot virtual machine v1.4.1 d2. Available at http:\/\/java.sun.com\/products\/hotspot\/docs\/whitepaper\/Java_Hotspot_v1.4.%1\/JHS_141_WP_d2a.pdf.]]  Java 2002. The Java HotSpot virtual machine v1.4.1 d2. Available at http:\/\/java.sun.com\/products\/hotspot\/docs\/whitepaper\/Java_Hotspot_v1.4.%1\/JHS_141_WP_d2a.pdf.]]"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1109\/32.60317"},{"key":"e_1_2_1_27_1","unstructured":"Lee I. 1983. DYMOS: A dynamic modification system. Ph.D. thesis Department of Computer Science University of Wisconsin Madison.]]   Lee I. 1983. DYMOS: A dynamic modification system. Ph.D. thesis Department of Computer Science University of Wisconsin Madison.]]"},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1109\/32.24720"},{"key":"e_1_2_1_29_1","volume-title":"Proceedings of the 14th European Conference on Object-Oriented Programming","volume":"1850","author":"Malabarba S.","unstructured":"Malabarba , S. , Pandey , R. , Gragg , J. , Barr , E. , and Barnes , J. F . 2000. Runtime support for type-safe dynamic Java classes . In Proceedings of the 14th European Conference on Object-Oriented Programming . Sophia Antipolis, France. In Lecture Notes in Computer Science , vol. 1850 .]] Malabarba, S., Pandey, R., Gragg, J., Barr, E., and Barnes, J. F. 2000. Runtime support for type-safe dynamic Java classes. In Proceedings of the 14th European Conference on Object-Oriented Programming. Sophia Antipolis, France. In Lecture Notes in Computer Science, vol. 1850.]]"},{"volume-title":"Proceedings of the 2nd Workshop on Compiler Support for System Software","author":"Morrisett G.","key":"e_1_2_1_30_1","unstructured":"Morrisett , G. , Crary , K. , Glew , N. , Grossman , D. , Samuels , R. , Smith , F. , Walker , D. , Weirich , S. , and Zdancewic , S . 1999a. TALx86: A realistic typed assembly language . In Proceedings of the 2nd Workshop on Compiler Support for System Software . Atlanta, GA. 25--35.]] Morrisett, G., Crary, K., Glew, N., Grossman, D., Samuels, R., Smith, F., Walker, D., Weirich, S., and Zdancewic, S. 1999a. TALx86: A realistic typed assembly language. In Proceedings of the 2nd Workshop on Compiler Support for System Software. Atlanta, GA. 25--35.]]"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/319301.319345"},{"volume-title":"Proceedings of the 1st Workshop on Internet Server Performance","author":"Mosberger D.","key":"e_1_2_1_32_1","unstructured":"Mosberger , D. and Jin , T . 1998. HTTPERF: A tool for measuring web server performance . In Proceedings of the 1st Workshop on Internet Server Performance . Madison, WI. ACM, New York, 59--67.]] Mosberger, D. and Jin, T. 1998. HTTPERF: A tool for measuring web server performance. In Proceedings of the 1st Workshop on Internet Server Performance. Madison, WI. ACM, New York, 59--67.]]"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/263699.263712"},{"key":"e_1_2_1_34_1","volume-title":"Internet RFC","author":"Oehler M.","year":"2085","unstructured":"Oehler , M. and Glenn , R . 1997. HMAC-MD5 IP authentication with replay prevention . Internet RFC 2085 .]] Oehler, M. and Glenn, R. 1997. HMAC-MD5 IP authentication with replay prevention. Internet RFC 2085.]]"},{"volume-title":"Proceedings of the USENIX Annual Technical Conference","author":"Pai V. S.","key":"e_1_2_1_35_1","unstructured":"Pai , V. S. , Druschel , P. , and Zwaenepoel , W . 1999. Flash: An efficient and portable webserver . In Proceedings of the USENIX Annual Technical Conference ( Monterey, CA). 106--119.]] Pai, V. S., Druschel, P., and Zwaenepoel, W. 1999. Flash: An efficient and portable webserver. In Proceedings of the USENIX Annual Technical Conference (Monterey, CA). 106--119.]]"},{"key":"e_1_2_1_36_1","first-page":"341","article-title":"Monsters in a box","volume":"8","author":"Pescovitz D.","year":"2000","unstructured":"Pescovitz , D. 2000 . Monsters in a box . Wired 8 , 12, 341 -- 347 .]] Pescovitz, D. 2000. Monsters in a box. Wired 8, 12, 341--347.]]","journal-title":"Wired"},{"key":"e_1_2_1_37_1","volume-title":"Tech. Rep. YALEU\/DCS\/RR-1135, Department of Computer Science","author":"Peterson J.","year":"1997","unstructured":"Peterson , J. , Hudak , P. , and Ling , G. S . 1997 . Principled dynamic code improvement. Tech. Rep. YALEU\/DCS\/RR-1135, Department of Computer Science , Yale University . July.]] Peterson, J., Hudak, P., and Ling, G. S. 1997. Principled dynamic code improvement. Tech. Rep. YALEU\/DCS\/RR-1135, Department of Computer Science, Yale University. July.]]"},{"key":"e_1_2_1_38_1","doi-asserted-by":"crossref","unstructured":"Pratt J. W. and Gibbons J. D. 1981. Concepts of Nonparametric Theory. Springer-Verlag New York.]]  Pratt J. W. and Gibbons J. D. 1981. Concepts of Nonparametric Theory. Springer-Verlag New York.]]","DOI":"10.1007\/978-1-4612-5931-2"},{"volume-title":"Proceedings of the Symposium on Fault-Tolerant Computing","author":"Ramkumar B.","key":"e_1_2_1_39_1","unstructured":"Ramkumar , B. and Strumpen , V . 1997. Portable checkpointing for heterogenous architectures . In Proceedings of the Symposium on Fault-Tolerant Computing . Seattle, WA. 58--67.]] Ramkumar, B. and Strumpen, V. 1997. Portable checkpointing for heterogenous architectures. In Proceedings of the Symposium on Fault-Tolerant Computing. Seattle, WA. 58--67.]]"},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1109\/52.199735"},{"key":"e_1_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/360204.360225"},{"volume-title":"Proceedings of the USENIX","author":"Soules C.","key":"e_1_2_1_42_1","unstructured":"Soules , C. , Appavoo , J. , Hui , K. , Wisniewski , R. W. , Silva , D. D. , Ganger , G. R. , Krieger , O. , Stumm , M. , Auslander , M. , Ostrowski , M. , Rosenburg , B. , and Xenidis , J . 2003. System support for online reconfiguration . In Proceedings of the USENIX . San Antonio, TX. 141--154.]] Soules, C., Appavoo, J., Hui, K., Wisniewski, R. W., Silva, D. D., Ganger, G. R., Krieger, O., Stumm, M., Auslander, M., Ostrowski, M., Rosenburg, B., and Xenidis, J. 2003. System support for online reconfiguration. In Proceedings of the USENIX. San Antonio, TX. 141--154.]]"},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1109\/35.568214"},{"key":"e_1_2_1_44_1","unstructured":"Tool Interface Standards Committee. 1995. Executable and Linking Format (ELF) specification.]]  Tool Interface Standards Committee. 1995. Executable and Linking Format (ELF) specification.]]"},{"key":"e_1_2_1_45_1","volume-title":"Tech. Rep. TR-CS-96-05","author":"Tridgell A.","year":"1996","unstructured":"Tridgell , A. and Mackerras , P . 1996 . The rsync algorithm. Tech. Rep. TR-CS-96-05 , Canberra 0200 ACT, Australia . http:\/\/samba.anu.edu.au\/rsync\/.]] Tridgell, A. and Mackerras, P. 1996. The rsync algorithm. Tech. Rep. TR-CS-96-05, Canberra 0200 ACT, Australia. http:\/\/samba.anu.edu.au\/rsync\/.]]"},{"key":"e_1_2_1_46_1","unstructured":"Webstone. 2001. Mindcraft---WebStone benchmark information. http:\/\/www.mindcraft.com\/webstone.]]  Webstone. 2001. Mindcraft---WebStone benchmark information. http:\/\/www.mindcraft.com\/webstone.]]"}],"container-title":["ACM Transactions on Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1108970.1108971","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1108970.1108971","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T16:07:50Z","timestamp":1750262870000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1108970.1108971"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2005,11]]},"references-count":42,"journal-issue":{"issue":"6","published-print":{"date-parts":[[2005,11]]}},"alternative-id":["10.1145\/1108970.1108971"],"URL":"https:\/\/doi.org\/10.1145\/1108970.1108971","relation":{},"ISSN":["0164-0925","1558-4593"],"issn-type":[{"type":"print","value":"0164-0925"},{"type":"electronic","value":"1558-4593"}],"subject":[],"published":{"date-parts":[[2005,11]]},"assertion":[{"value":"2005-11-01","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}