The goal of this transcompiler is to open javascript to some advanced OOP features, such as operators overloading, as well as to introduce new syntax patterns for a comfortable code writing.
ISBN:
(纸本)9783030026837;9783030026820
The goal of this transcompiler is to open javascript to some advanced OOP features, such as operators overloading, as well as to introduce new syntax patterns for a comfortable code writing.
To use javascript for Internet of Things (IoT), it is essential to reduce the size of the virtual machine (VM). Although operators in javascript are polymorphic, many applications apply operators to only a limited set...
详细信息
ISBN:
(纸本)9781450368629
To use javascript for Internet of Things (IoT), it is essential to reduce the size of the virtual machine (VM). Although operators in javascript are polymorphic, many applications apply operators to only a limited set of datatypes. Thus, customizing a VM to include only implementations of operators of datatypes used can reduce the size of the VM. In this research, we determine the set of operand datatypes that are possibly given to each operator for individual applications. Because javascript is a dynamically typed programming language, it is difficult to infer types accurately. Instead, as a practical approach, we obtain type information from executions of unit tests of the application. We implemented a prototype system to record datatypes that are given to each operator in executions of unit tests for Jasmine. The system does not record operands of operators executed by the Jasmine's code but only those by the application's code. We applied this system to two small applications and found that it determined type information with high accuracy.
Audio files entered cartography about 25 years ago. Since the mid-1990s, several examples of audiovisual maps have been created and published. These maps cover a diverse range of applications. In terms of the sou...
详细信息
Support for regular expressions in symbolic execution-based tools for test generation and bug finding is insufficient. Common aspects of mainstream regular expression engines, such as backreferences or greedy matching...
详细信息
ISBN:
(纸本)9781450367127
Support for regular expressions in symbolic execution-based tools for test generation and bug finding is insufficient. Common aspects of mainstream regular expression engines, such as backreferences or greedy matching, are ignored or imprecisely approximated, leading to poor test coverage or missed bugs. In this paper, we present a model for the complete regular expression language of ECMAScript 2015 (ES6), which is sound for dynamic symbolic execution of the test and exec functions. We model regular expression operations using string constraints and classical regular expressions and use a refinement scheme to address the problem of matching precedence and greediness. We implemented our model in ExpoSE, a dynamic symbolic execution engine for javascript, and evaluated it on over 1,000 *** packages containing regular expressions, demonstrating that the strategy is effective and can significantly increase the number of successful regular expression queries and therefore boost coverage.
The comparison and alignment of runtime traces are essential, e.g., for semantic analysis or debugging. However, naive sequence alignment algorithms cannot address the needs of the modern web: (i) the bytecode generat...
详细信息
ISBN:
(纸本)9781450369879
The comparison and alignment of runtime traces are essential, e.g., for semantic analysis or debugging. However, naive sequence alignment algorithms cannot address the needs of the modern web: (i) the bytecode generation process of V8 is not deterministic;(ii) bytecode traces are large. We present STRAC, a scalable and extensible tool tailored to compare bytecode traces generated by the V8 javascript engine. Given two V8 bytecode traces and a distance function between trace events, STRAC computes and provides the best alignment. The key insight is to split access between memory and disk. STRAC can identify semantically equivalent web pages and is capable of processing huge V8 bytecode traces whose order of magnitude matches today's web like https: //***, which generates approx. 150k of V8 bytecode instructions.
javascript is the most popular programming language these days and it is also the core language of the *** environment. Sharing code is a simple task in this environment and the shared code can be easily reused as bui...
详细信息
ISBN:
(纸本)9789897583759
javascript is the most popular programming language these days and it is also the core language of the *** environment. Sharing code is a simple task in this environment and the shared code can be easily reused as building blocks to create new applications. This vibrant and ever growing environment is not perfect though. Due to the large amount of reused code, even simple applications can have a lot of indirect dependencies. Developers may not even be aware of the fact that some of these dependencies could contain malware, since harmful code can be hidden relatively easily due to the dynamic nature of javascript. Dynamic software analysis is one way of detecting suspicious activities. Call graphs can reveal the internal workings of an application and they have been used successfully for malware detection. In ***, no tool has been available for directly generating javascript call graphs before. In this paper, we are going to introduce three tools that can be used to generate call graphs for further analysis. We show that call graphs contain a significant amount of engine-specific information but filters can be used to reduce such differences.
This paper presents our recent work in progress aiming to design effective learning simulations of day/night and seasons and lunar phases using web technology for K-12 Earth and Environmental science curriculum. Two i...
详细信息
ISBN:
(纸本)9781728115023
This paper presents our recent work in progress aiming to design effective learning simulations of day/night and seasons and lunar phases using web technology for K-12 Earth and Environmental science curriculum. Two interactive simulations using HTML5, javascript and CSS are developed with steerable parameters for students to interact and manipulate. The design and development details are discussed in this paper. We are currently in the process of designing the lesson plans with various investigations to engage students with the seasons and lunar phases concepts as well as assessments to evaluate their learning outcomes.
Containerized applications, and in particular Docker images, are becoming a common solution in cloud environments to meet ever-increasing demands in terms of portability, reliability and fast deployment. A Docker imag...
详细信息
ISBN:
(纸本)9781728105918
Containerized applications, and in particular Docker images, are becoming a common solution in cloud environments to meet ever-increasing demands in terms of portability, reliability and fast deployment. A Docker image includes all environmental dependencies required to run it, such as specific versions of system and third-party packages. Leveraging on its modularity, an image can be easily embedded in other images, thus simplifying the way of sharing dependencies and building new software. However, the dependencies included in an image may be out of date due to backward compatibility requirements, endangering the environments where the image has been deployed with known vulnerabilities. While previous research efforts have focused on studying the impact of bugs and vulnerabilities of system packages within Docker images, no attention has been given to third-party packages. This paper empirically studies the impact of npm javascript package vulnerabilities in Docker images. We based our analysis on 961 images from three official repositories that use ***, and 1,099 security reports of packages available on npm, the most popular javascript package manager. Our results reveal that the presence of outdated npm packages in Docker images increases the risk of potential security vulnerabilities, suggesting that Docker maintainers should keep their installed javascript packages up to date.
Object serialization is important to a variety of applications, including session migration and distributed computing. A general javascript object serializer must support function serialization as functions are first-...
详细信息
ISBN:
(纸本)9781450369855
Object serialization is important to a variety of applications, including session migration and distributed computing. A general javascript object serializer must support function serialization as functions are first-class objects. However, javascript offers no built-in function serialization and limits custom serializers by exposing no meta operator to query a function's captured variables. Code instrumentation can expose captured variables but state-of-the-art instrumentation techniques introduce high overheads, vary in supported syntax and/or use complex (de)serialization algorithms. We introduce FlashFreeze, an instrumentation technique based on capture lists. FlashFreeze achieves a tiny run time overhead: an Octane score reduction of 3% compared to 76% for the state-of-the-art ThingsMigrate tool and 1% for the work-in-progress FSM tool. FlashFreeze supports all self-contained ECMAScript 5 programs except for specific uses of eval, with, and source code inspection. FlashFreeze's construction gives rise to simple (de)serialization algorithms.
javascript performance is paramount to a user's browsing experience. Browser vendors have gone to great lengths to improve javascript's steady-state performance. This has led to sophisticated web applications....
详细信息
ISBN:
(纸本)9781450367127
javascript performance is paramount to a user's browsing experience. Browser vendors have gone to great lengths to improve javascript's steady-state performance. This has led to sophisticated web applications. However, as users increasingly expect instantaneous page load times, another important goal for javascript engines is to attain minimal startup times. In this paper, we reduce the startup time of javascript programs by enhancing the reuse of compilation and optimization information across different executions. Specifically, we propose a new scheme to increase the startup performance of Inline Caching (IC), a key optimization for dynamic type systems. The idea is to represent a substantial portion of the IC information in an execution in a context-independent way, and reuse it in subsequent executions. We call our enhanced IC design Reusable Inline Caching (RIC). We integrate RIC into the state-of-the-art Google V8 javascript engine and measure its impact on the initialization time of popular javascript libraries. By recycling IC information collected from a previous execution, RIC reduces the average initialization time per library by 17%.
暂无评论