Show simple item record

Improving the Runtime Performance and Robustness of Hybrid Statically and Dynamically Typed Programming Languages

dc.contributor.advisorOrtín Soler, Francisco 
dc.contributor.authorGarcía Rodríguez, Miguel 
dc.contributor.otherInformática, Departamento de spa
dc.date.accessioned2013-07-03T10:50:57Z
dc.date.available2013-07-03T10:50:57Z
dc.date.issued2013-06-25
dc.identifier.isbn978-84-8317-987-1
dc.identifier.urihttp://hdl.handle.net/10651/17750
dc.description.abstractDynamically typed languages have turned out to be suitable for different software development scenarios such as Web engineering, rapid prototyping, and the construction of applications where runtime adaptability is an important issue. In contrast, statically typed languages have undeniable advantages such as early type error detection and more opportunities for compiler optimizations. Since both approaches offer different benefits, hybrid statically and dynamically typed programming languages have emerged, and some statically typed languages have also incorporated dynamic typing capabilities. However, these languages do not perform static type inference on dynamically typed code, lacking the advantages provided for statically typed code. In this PhD we present StaDyn, a hybrid static and dynamic typing language that performs static type inference and type checking of both statically and dynamically typed references. StaDyn permits the straightforward development of adaptable software and rapid prototyping, offering early type error detection, improved runtime performance, and direct interoperation between dynamically and statically typed code. The programmer indicates whether high flexibility is required (dynamic typing) or stronger type checking (static) is preferred. It is also possible to combine both approaches, making parts of an application more flexible, whereas the rest of the program maintains its robustness and runtime performance. The key features of the proposed hybrid static and dynamic type system are a new interpretation of union and intersection types, the combination of syntax-directed and constraint-based type-checking, type inference of implicitly-typed dynamic and static references, and flow-sensitive type-checking. The type system has been implemented as an extension of a real full-fledged programming language such as C\# (StaDyn), obtaining the benefits of combining the .NET Framework and the proposed type system. We have compared the runtime performance and memory consumption of StaDyn with the most widespread hybrid dynamic and static typing programming languages for the .NET Framework 4. The assessment has been done with an ample set of benchmarks. StaDyn has shown the best performance in all the programs than use at least one dynamic reference, being 150% and 500% times faster executing dynamic and hybrid typing code, respectively. When no dynamic reference is used, the only language that performs better than StaDyn (2.5%) is the C# 4.0 production compiler, due to its static optimizations. Besides, StaDyn has showed the lowest memory consumption in every scenario. We have seen how the static type information gathered for dynamically typed references can be used to effectively improve the runtime performance and robustness of hybrid static and dynamic typing languages. Unlike the rest of the analyzed languages, StaDyn continues collecting type information of dynamically typed code. The type information inferred by the compiler is used to detect type errors at compile time when dynamic references are used. Moreover, this information is also used to optimize the generated code without any runtime memory cost.spa
dc.description.sponsorshipThis work has been partially funded by Microsoft Research, under the project entitled Extending dynamic features of the SSCLI, awarded in the Phoenix and SSCLI, Compilation and Managed Execution Request for Proposals. It has been also funded by the Department of Science and Technology (Spain) under the National Program for Research, Development and Innovation with two projects: Improving Performance and Robustness of Dynamic Languages to develop Efficient, Scalable and Reliable Software (TIN2008-00276) and Obtaining Adaptable, Robust and Efficient Software by including Structural Reflection to Statically Typed Programming Languages (TIN2011-25978).spa
dc.format.extent123 p.spa
dc.language.isoeng
dc.rightsCC Reconocimiento - No comercial - Sin obras derivadas 3.0 España
dc.rights.urihttp://creativecommons.org/licenses/by-nc-nd/3.0/es/
dc.subjectStaDynspa
dc.subjectHybrid Dynamic and Static Typingspa
dc.subjectDynamic Languagesspa
dc.subjectUnion Typesspa
dc.subjectIntersection Typesspa
dc.subjectRuntime Performancespa
dc.subject.Netspa
dc.titleImproving the Runtime Performance and Robustness of Hybrid Statically and Dynamically Typed Programming Languageseng
dc.typedoctoral thesisspa
dc.identifier.localAS. 2426-2013
dc.local.notesDT(SE) 2013-086
dc.rights.accessRightsopen access
dc.relation.tesispublicadahttp://absysweb.cpd.uniovi.es/cgi-bin/abnetopac?TITN=1218678


Files in this item

untranslated

This item appears in the following Collection(s)

Show simple item record

CC Reconocimiento - No comercial - Sin obras derivadas 3.0 España
This item is protected with a Creative Commons License