{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2024,7,14]],"date-time":"2024-07-14T02:59:17Z","timestamp":1720925957830},"reference-count":49,"publisher":"Oxford University Press (OUP)","content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["The Computer Journal"],"DOI":"10.1093\/comjnl\/bxw108","type":"journal-article","created":{"date-parts":[[2016,12,8]],"date-time":"2016-12-08T07:05:45Z","timestamp":1481180745000},"source":"Crossref","is-referenced-by-count":0,"title":["SSA Transformations to Facilitate Type Inference in Dynamically Typed Code"],"prefix":"10.1093","author":[{"given":"Jose","family":"Quiroga","sequence":"first","affiliation":[]},{"given":"Francisco","family":"Ortin","sequence":"additional","affiliation":[]}],"member":"286","published-online":{"date-parts":[[2017,1,2]]},"reference":[{"key":"2017010717101983000_bxw108v2.1","doi-asserted-by":"crossref","first-page":"12","DOI":"10.1109\/MC.2007.53","article-title":"Developers shift to dynamic programming languages","volume":"40","author":"Paulson","year":"2007","journal-title":"Computer"},{"key":"2017010717101983000_bxw108v2.2","doi-asserted-by":"crossref","first-page":"76","DOI":"10.1109\/MS.2014.104","article-title":"A comprehensive evaluation of common python implementations","volume":"32","author":"Redondo","year":"2015","journal-title":"IEEE Softw."},{"key":"2017010717101983000_bxw108v2.3","doi-asserted-by":"crossref","unstructured":"Bierman, G. , Meijer, E. , and Torgersen, M . (2010) Adding Dynamic Types to C#. In Proc. 24th Europ. Conf. Object-Oriented Programming, Maribor, Slovenia, June 21\u201325, ECOOP'10, pp. 76\u2013100. Springer.","DOI":"10.1007\/978-3-642-14107-2_5"},{"key":"2017010717101983000_bxw108v2.4","doi-asserted-by":"crossref","unstructured":"Milner, R . (1997) The Definition of Standard ML: Revised, MIT press, Cambridge, MA, USA.","DOI":"10.7551\/mitpress\/2319.001.0001"},{"key":"2017010717101983000_bxw108v2.5","first-page":"1","article-title":"Report on the programming language Haskell: a non-strict, purely functional language version 1.2","volume":"27","author":"Hudak","year":"1992","journal-title":"ACM SIGPLAN Not."},{"key":"2017010717101983000_bxw108v2.6","doi-asserted-by":"crossref","unstructured":"Pearce, D.J. (2013) Sound and Complete Flow Typing with Unions, Intersections and Negations. In Giacobazzi, R., Berdine, J., and Mastroeni, I. (eds.), 14th Int. Conf. Verification, Model Checking, and Abstract Interpretation. Springer Berlin Heidelberg, Berlin, Heidelberg.","DOI":"10.1007\/978-3-642-35873-9_21"},{"key":"2017010717101983000_bxw108v2.7","doi-asserted-by":"crossref","unstructured":"Odersky, M. (2004) The Scala Experiment \u2013 Can We Provide Better Language Support for Component Systems? In Chin, W.-N. (ed.), In Proc. 2nd Asian Symposium on Programming Languages and Systems, Berlin, Heidelberg, November APLAS, pp. 364\u2013365. Springer Berlin Heidelberg.","DOI":"10.1007\/978-3-540-30477-7_24"},{"key":"2017010717101983000_bxw108v2.8","unstructured":"Chaudhuri, A. (2016). Flow, a static type checker for JavaScript. http:\/\/flowtype.org."},{"key":"2017010717101983000_bxw108v2.9","doi-asserted-by":"crossref","unstructured":"Siek, J.G. and Taha, W. (2007) Gradual Typing for Objects. In Proc. 21st European Conf. Object-Oriented Program. (ECOOP), Berlin, Germany, 30 July\u20133 August, pp. 2\u201327. Springer.","DOI":"10.1007\/978-3-540-73589-2_2"},{"key":"2017010717101983000_bxw108v2.10","doi-asserted-by":"crossref","first-page":"242","DOI":"10.15446\/dyna.v81n186.40428","article-title":"Attaining multiple dispatch in widespread object-oriented languages","volume":"81","author":"Ortin","year":"2014","journal-title":"Dyna"},{"key":"2017010717101983000_bxw108v2.11","doi-asserted-by":"crossref","first-page":"114","DOI":"10.1016\/j.jss.2015.11.041","article-title":"Optimizing runtime performance of hybrid dynamically and statically typed languages for the .Net platform","volume":"113","author":"Quiroga","year":"2016","journal-title":"J. Syst. Softw."},{"key":"2017010717101983000_bxw108v2.12","doi-asserted-by":"crossref","first-page":"268","DOI":"10.1049\/iet-sen.2009.0070","article-title":"Including both static and dynamic typing in the same programming language","volume":"4","author":"Ortin","year":"2010","journal-title":"IET Softw."},{"key":"2017010717101983000_bxw108v2.13","unstructured":"Ortin, F. (2016). The StaDyn programming language. http:\/\/www.reflection.uniovi.es\/stadyn."},{"key":"2017010717101983000_bxw108v2.14","unstructured":"Buschmann, F. , Meunier, R. , Rohnert, H. , Sommerlad, P. and Stal, M . (1996) Pattern Oriented Software Architecture: A System of Patterns, John Wiley and Sons, Chichester, UK."},{"key":"2017010717101983000_bxw108v2.15","doi-asserted-by":"publisher","DOI":"10.1093\/comjnl\/bxr067"},{"key":"2017010717101983000_bxw108v2.16","doi-asserted-by":"crossref","first-page":"451","DOI":"10.1145\/115372.115320","article-title":"Efficiently computing static single assignment form and the control dependence graph","volume":"13","author":"Cytron","year":"1991","journal-title":"ACM Trans. Program. Lang. Syst. (TOPLAS)"},{"key":"2017010717101983000_bxw108v2.17","doi-asserted-by":"crossref","unstructured":"Rosen, B.K. , Wegman, M.N. , and Zadeck, F.K. (1988) Global Value Numbers and Redundant Computations. In Proc. 15th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, San Diego, California, USA, January POPL'88, pp. 12\u201327. ACM.","DOI":"10.1145\/73560.73562"},{"key":"2017010717101983000_bxw108v2.18","doi-asserted-by":"crossref","first-page":"181","DOI":"10.1145\/103135.103136","article-title":"Constant propagation with conditional branches","volume":"13","author":"Wegman","year":"1988","journal-title":"ACM Trans. Program. Lang. Syst. (TOPLAS)"},{"key":"2017010717101983000_bxw108v2.19","unstructured":"Cytron, R. and Ferrante, J . (1987) What's in a Name? -or- the Value of Renaming for Parallelism Detection and Storage Allocation, IBM Thomas J. Watson Research Division, Yorktown Heights, NY, USA."},{"key":"2017010717101983000_bxw108v2.20","unstructured":"Appel, A.W . (1998) ) Modern Compiler Implementation in Java , Cambridge University Press, New York, NY, USA."},{"key":"2017010717101983000_bxw108v2.21","doi-asserted-by":"crossref","first-page":"202","DOI":"10.1006\/inco.1995.1086","article-title":"Intersection and union types: syntax and semantics","volume":"119","author":"Barbanera","year":"1995","journal-title":"Inf. Comput."},{"key":"2017010717101983000_bxw108v2.22","doi-asserted-by":"crossref","unstructured":"Aiken, A. and Wimmers, E.L. (1993) Type Inclusion Constraints and Type Inference. In Proc. Conference on Functional Programming Languages and Computer Architecture, Copenhagen, Denmark, June 9\u201311, pp. 31\u201341. ACM Press.","DOI":"10.1145\/165180.165188"},{"key":"2017010717101983000_bxw108v2.23","unstructured":"Gamma, E. , Helm, R. , Johnson, R. and Vlissides, J . (1994) Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley Professional Computing Series, Boston, MA, USA."},{"key":"2017010717101983000_bxw108v2.24","unstructured":"Quiroga, J. and Ortin, F. (2016). SSA transformations to efficiently support variables with different types in the same scope. http:\/\/www.reflection.uniovi.es\/stadyn\/download\/2016\/compj."},{"key":"2017010717101983000_bxw108v2.25","unstructured":"Krintz, C. (2015). A collection of phoenix-compatible C# benchmarks. http:\/\/www.cs.ucsb.edu\/ckrintz\/racelab\/PhxCSBenchmarks."},{"key":"2017010717101983000_bxw108v2.26","unstructured":"Foundation, P.S. (2015). Pybench benchmark project trunk page. http:\/\/svn.python.org\/projects\/python\/trunk\/Tools\/pybench."},{"key":"2017010717101983000_bxw108v2.27","doi-asserted-by":"crossref","first-page":"1013","DOI":"10.1145\/358274.358283","article-title":"Dhrystone: a synthetic systems programming benchmark","volume":"27","author":"Weicker","year":"1984","journal-title":"Commun. ACM"},{"key":"2017010717101983000_bxw108v2.28","unstructured":"Microsoft (2015). The .Net compiler platform (Roslyn). https:\/\/github.com\/dotnet\/roslyn."},{"key":"2017010717101983000_bxw108v2.29","unstructured":"Mono-Project (2015). The Mono project. http:\/\/www.mono-project.com."},{"key":"2017010717101983000_bxw108v2.30","doi-asserted-by":"crossref","unstructured":"Georges, A. , Buytaert, D. and Eeckhout, L. (2007) Statistically Rigorous Java Performance Evaluation. In Proc. 22nd Annual ACM SIGPLAN Conf. Object-oriented Programming Systems and Applications, Montreal, QC, Canada, October OOPSLA'07, pp. 57\u201376. ACM.","DOI":"10.1145\/1297027.1297033"},{"key":"2017010717101983000_bxw108v2.31","doi-asserted-by":"crossref","unstructured":"Alpern, B. , Wegman, M.N. and Zadeck, F.K. (1988) Detecting Equality of Variables in Programs. In Proc. 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, New York, NY, USA, January, pp. 1\u201311. ACM.","DOI":"10.1145\/73560.73561"},{"key":"2017010717101983000_bxw108v2.32","unstructured":"Foundation, F.S. (2016). GNU compiler collection (gcc) internals. https:\/\/gcc.gnu.org\/onlinedocs\/gccint\/index.html."},{"key":"2017010717101983000_bxw108v2.33","doi-asserted-by":"crossref","unstructured":"Lattner, C. and Adve, V. (2004) LLVM: A Compilation Framework for Lifelong Program Analysis Transformation. In Proc. 2004 Int. Symp. Code Generation and Optimization (CGO'04), Los Alamitos, CA, USA, March, pp. 75\u201386. IEEE Computer Society.","DOI":"10.1109\/CGO.2004.1281665"},{"key":"2017010717101983000_bxw108v2.34","doi-asserted-by":"crossref","unstructured":"Bolz, C.F. , Cuni, A. , Fijalkowski, M. and Rigo, A. (2009) Tracing the Meta-level: PyPy's Tracing JIT Compiler. In Proc. 4th Workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages and Programming Systems, Genova, Italy, July ICOOOLPS \u201809, pp. 18\u201325. ACM.","DOI":"10.1145\/1565824.1565827"},{"key":"2017010717101983000_bxw108v2.35","unstructured":"Krekel, H. and Rigo, A. (2006) PyPy, architecture overview. PyCon, Dallas, Texas, USA, February. PyCon."},{"key":"2017010717101983000_bxw108v2.36","unstructured":"Biggar, P. (2010) Design and implementation of an ahead-of-time compiler for PHP. PhD Thesis, Trinity College Dublin."},{"key":"2017010717101983000_bxw108v2.37","doi-asserted-by":"crossref","first-page":"971","DOI":"10.1016\/j.scico.2011.01.004","article-title":"A practical solution for achieving language compatibility in scripting language compilers","volume":"77","author":"Biggar","year":"2012","journal-title":"Sci. Comput. Program."},{"key":"2017010717101983000_bxw108v2.38","doi-asserted-by":"crossref","unstructured":"Hackett, B. and Guo, S.-y. (2012) Fast and Precise Hybrid Type Inference for JavaScript. In Proc. 33rd ACM SIGPLAN Conf. Program. Lang. Design and Implementation, Beijing, China, June, pp. 239\u2013250. ACM.","DOI":"10.1145\/2254064.2254094"},{"key":"2017010717101983000_bxw108v2.39","unstructured":"Conrod, J. (2013). A tour of V8: Crankshaft, the optimizing compiler. http:\/\/jayconrod.com\/posts\/54\/a-tour-of-v8-crankshaft-the-optimizing-compiler."},{"key":"2017010717101983000_bxw108v2.40","unstructured":"Pall, M. (2016). LuaJIT 2.0 SSA IR. http:\/\/wiki.luajit.org\/SSA-IR-2.0."},{"key":"2017010717101983000_bxw108v2.41","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1145\/1369396.1370017","article-title":"Design of the Java HotSpotTM client compiler for Java 6","volume":"5","author":"Kotzmann","year":"2008","journal-title":"ACM Trans. Archit. Code Optim. (TACO)"},{"key":"2017010717101983000_bxw108v2.42","doi-asserted-by":"crossref","unstructured":"Wimmer, C. and Franz, M. (2010) Linear Scan Register Allocation on SSA Form. In Proc. 8th Ann. IEEE\/ACM Int. Symp. Code Generation and Optimization, Toronto, ON, Canada, April CGO'10, pp. 170\u2013179. ACM.","DOI":"10.1145\/1772954.1772979"},{"key":"2017010717101983000_bxw108v2.43","unstructured":"Team, P. (2015). What's new in PyPy 2.5.0. http:\/\/doc.pypy.org\/en\/latest\/whatsnew-2.5.0.html."},{"key":"2017010717101983000_bxw108v2.44","doi-asserted-by":"crossref","unstructured":"Amme, W. , Dalton, N. , von Ronne, J. and Franz, M. (2001) SafeTSA: A Type Safe and Referentially Secure Mobile-code Representation Based on Static Single Assignment Form. In Proc. ACM SIGPLAN Conf. Program. Lang. Design and Implementation, Snowbird, Utah, USA, June PLDI'01, pp. 137\u2013147. ACM.","DOI":"10.1145\/378795.378825"},{"key":"2017010717101983000_bxw108v2.45","doi-asserted-by":"crossref","unstructured":"Matsuno, Y. and Ohori, A. (2006) A Type System Equivalent to Static Single Assignment. In Proc. 8th ACM SIGPLAN Int. Conf. Principles and Practice of Declarative Programming, Venice, Italy, 10\u201312 July, pp. 249\u2013260. ACM ACM.","DOI":"10.1145\/1140335.1140365"},{"key":"2017010717101983000_bxw108v2.46","unstructured":"Vanbroekhoven, P. (2002) Dynamic Single Assignment. Symposium in Program Acceleration through Application and Architecture driven Code, Knoxville, TN, USA, pp. 5\u20137."},{"key":"2017010717101983000_bxw108v2.47","unstructured":"Offner, C. and Knobe, K. (2003) Weak Dynamic Single Assignment Form. HP Labs Technical Report HPL2003-169, Cambridge, UK, August, pp. 1\u201376. Cambridge Research Laboratory."},{"key":"2017010717101983000_bxw108v2.48","doi-asserted-by":"crossref","first-page":"17","DOI":"10.1145\/278283.278285","article-title":"SSA is functional programming","volume":"33","author":"Appel","year":"1998","journal-title":"SIGPLAN Not."},{"key":"2017010717101983000_bxw108v2.49","doi-asserted-by":"crossref","unstructured":"Kelsey, R.A. (1995) A Correspondence Between Continuation Passing Style and Static Single Assignment Form. In Proc. ACM SIGPLAN Workshop on Intermediate Representations, San Francisco, CA, USA, March, pp. 13\u201322. ACM.","DOI":"10.1145\/202529.202532"}],"container-title":["The Computer Journal"],"original-title":[],"language":"en","deposited":{"date-parts":[[2019,9,16]],"date-time":"2019-09-16T06:02:17Z","timestamp":1568613737000},"score":1,"resource":{"primary":{"URL":"https:\/\/academic.oup.com\/comjnl\/article-lookup\/doi\/10.1093\/comjnl\/bxw108"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2017,1,2]]},"references-count":49,"alternative-id":["10.1093\/comjnl\/bxw108"],"URL":"https:\/\/doi.org\/10.1093\/comjnl\/bxw108","relation":{},"ISSN":["0010-4620","1460-2067"],"issn-type":[{"value":"0010-4620","type":"print"},{"value":"1460-2067","type":"electronic"}],"subject":[],"published":{"date-parts":[[2017,1,2]]}}}