Trufflewasm: a Webassembly Interpreter on Graalvm

Total Page:16

File Type:pdf, Size:1020Kb

Trufflewasm: a Webassembly Interpreter on Graalvm The University of Manchester Research TruffleWasm: A WebAssembly Interpreter on GraalVM DOI: 10.1145/3381052.3381325 Document Version Accepted author manuscript Link to publication record in Manchester Research Explorer Citation for published version (APA): Salim, S., Nisbet, A., & Luján, M. (2020). TruffleWasm: A WebAssembly Interpreter on GraalVM. In Proceedings of the ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments (VEE'20) Association for Computing Machinery. https://doi.org/10.1145/3381052.3381325 Published in: Proceedings of the ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments (VEE'20) Citing this paper Please note that where the full-text provided on Manchester Research Explorer is the Author Accepted Manuscript or Proof version this may differ from the final Published version. If citing, it is advised that you check and use the publisher's definitive version. General rights Copyright and moral rights for the publications made accessible in the Research Explorer are retained by the authors and/or other copyright owners and it is a condition of accessing publications that users recognise and abide by the legal requirements associated with these rights. Takedown policy If you believe that this document breaches copyright please refer to the University of Manchester’s Takedown Procedures [http://man.ac.uk/04Y6Bo] or contact [email protected] providing relevant details, so we can investigate your claim. Download date:03. Oct. 2021 TruffleWasm: A WebAssembly Interpreter on GraalVM Salim S. Salim Andy Nisbet Mikel Luján University of Manchester University of Manchester University of Manchester Manchester, UK Manchester, UK Manchester, UK [email protected] [email protected] [email protected] Abstract ’20), March 17, 2020, Lausanne, Switzerland. ACM, New York, NY, WebAssembly is a binary format originally designed for web- USA, 13 pages. https://doi.org/10.1145/3381052.3381325 based deployment and execution combined with JavaScript. WebAssembly can also be used for standalone programs 1 Introduction provided a WebAssembly runtime environment is available. WebAssembly, sometimes abbreviated as Wasm, is a com- This paper describes the design and implementation of pact, portable, statically typed stack-based binary format. TruffleWasm, a guest language implementation of a WebAssem- WebAssembly is easy to parse, specialise, and optimise com- bly hosted on Truffle and GraalVM. Truffle is a Java frame- pared to equivalent code fragments in JavaScript [8, 19, 20]. work capable of constructing and interpreting an Abstract Performance critical components of web applications can be Syntax Tree (AST) representing a program on standard JVMs. expressed in languages such as C, C++ or Rust. These com- GraalVM is a JVM with a JIT compiler which optimises the ponents are compiled into WebAssembly which typically execution of ASTs from Truffle. executes faster than the equivalent JavaScript. Thus, initial Our work is motivated by trying to understand the advan- WebAssembly implementations have focused on client-side tages and disadvantages of using GraalVM, and its support language execution on the browser to support tight inte- for multiple programming languages, to build a standalone gration with JavaScript and its APIs. Nonetheless, recent WebAssembly runtime. This contrast with developing a new development efforts have included WebAssembly targets runtime, as Wasmtime and other projects are undertaking. for standalone execution, such as on IoT, embedded, mobile TruffleWasm can execute standalone WebAssembly mod- devices, and servers. ules, while offering also interoperability with other GraalVM Standalone WebAssembly environments require a runtime hosted languages, such as Java, JavaScript, R, Python and to provide access to IO and external resources, leading to the Ruby. WebAssembly System Interface (WASI) that defines a POSIX- The experimental results compare the peak performance like interface. Standalone environments can provide their of TruffleWasm to the standalone Wasmtime runtime for own developed optimising compiler, but typically, they reuse the Shootout, C benchmarks in JetStream, and the Poly- existing back-ends such as LLVM [11]. For example, Was- BenchC benchmarks. The results show the geo-mean peak mer (see Section 7) provides an option to choose between performance of TruffleWasm is 4% slower than Wasmtime different deployment specific compiler back-ends balancing for Shootout/JetStream, and 4% faster for PolyBenchC. compilation time vs. quality of generated code. Browser en- CCS Concepts • Software and its engineering → Inter- gines typically use less aggressive optimisations with Ahead preters; Runtime environments; of Time (AoT) compilation because of the relatively short execution times that are expected for client-side scenarios. Keywords WebAssembly, Wasm, JVM, GraalVM, Just In An alternative approach to support WebAssembly could Time compilation be based on a Java Virtual Machine (JVM). Modern JVMs ACM Reference Format: provide a highly optimised managed runtime execution en- Salim S. Salim, Andy Nisbet, and Mikel Luján. 2020. TruffleWasm: A vironment that has been ported to many different target plat- WebAssembly Interpreter on GraalVM. In ACM SIGPLAN/SIGOPS forms. In addition, they support the JVM compiler interface International Conference on Virtual Execution Environments (VEE (JVMCI) which, for example, enable the Graal JIT compiler VEE ’20, March 17, 2020, Lausanne, Switzerland to be integrated with the JVMs part of the OpenJDK com- © 2020 Copyright held by the owner/author(s). Publication rights licensed munity. The Truffle framework [25] enables guest language to ACM. interpreters with competitive runtime performance to be This is the author’s version of the work. It is posted here for your personal hosted on a JVM with relatively low development effort in use. Not for redistribution. The definitive Version of Record was published comparison to native implementations. GraalVM1, is a JVM in ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments (VEE ’20), March 17, 2020, Lausanne, Switzerland, https://doi. distribution packaged with the Graal JIT compiler which org/10.1145/3381052.3381325. 1GraalVM website https://www.graalvm.org/ VEE ’20, March 17, 2020, Lausanne, Switzerland Salim S. Salim, Andy Nisbet, and Mikel Luján provides an aggressive general set of optimisations, and spe- cific transformations for Truffle-hosted guest languages [24] Wasm Modules as well as cross programming language interoperability [7] Imports - Imports - Imports Exports [6][3]. Using a JVM provides access to a wide range of - Exports ... - Exports the Java ecosystem support tools, such as debugging and - Tables - Tables - Memories ... - Memories ... instrumentation [18], including those designed specifically for GraalVM. Cross-language interoperability in GraalVM could allow efficient embedding of WebAssembly with other Linker Truffle-hosted languages; such as GraalJS (JavaScript), FastR JS Runtime (R), GraalPython (Python), and TruffleRuby (Ruby). We present TruffleWasm, the first implementation ofaWe- Internal API bAssembly language interpreter using Truffle and GraalVM with support for WASI, and compare its performance to the WASI ... Interface to other standalone Wasmtime implementation. TruffleWasm imple- runtimes ments version 1.0 (Minimal Viable Product) of the specifica- WebAssembly Runtime tion, and passes all core WebAssembly spec-tests provided by the specification. In summary, the main contributions of Figure 1. WebAssembly modules on an abstract runtime. this paper are: • A WebAssembly interpreter implemented using Truffle specify the functionality of a whole program as shown in on the JVM that exploits partial evaluation and JIT Figure 1. In the C/C++ ecosystem, there are currently three compilation (See Section 4). ways for C/C++ front end compilers to generate WebAssem- • A peak-performance comparison between WebAssem- bly modules. By compiling core execution source code to bly using TruffleWasm and Wasmtime (See Section WebAssembly and wrapping I/O and other necessary initiali- 6). sation in JavaScript, using standardised WASI API functions, • An evaluation of WebAssembly features and how they or by providing a standalone2 module where standard library map to Truffle language implementation framework. functions are added into a module as imports. Standalone • An addition to the GraalVM ecosystem which allows runtimes must implement any imported functionality using other Truffle languages to reuse existing WebAssembly their own (library code) mechanisms. modules and libraries using Truffle interoperability (See Section 4). 2.1 Imports and Exports We select Wasmtime as the main comparison point as it is Imports and exports are key features for inter-module and the main standalone WebAssembly runtime with support for language interoperability. Imported components are expected WASI required by the benchmarks. An anecdotal inspection to be supplied by a host runtime, such as a JavaScript runtime, of relative complexity using Lines of Code as a rough and or a standalone runtime defining its own built-ins or exports ready metric shows that Wasmtime requires more than dou- from another module. Clearly, imports such as JavaScript ble the number of lines of code than TruffleWasm. The next built-ins, and memory (that describe how storage is assigned sections of the paper are organised
Recommended publications
  • Differential Fuzzing the Webassembly
    Master’s Programme in Security and Cloud Computing Differential Fuzzing the WebAssembly Master’s Thesis Gilang Mentari Hamidy MASTER’S THESIS Aalto University - EURECOM MASTER’STHESIS 2020 Differential Fuzzing the WebAssembly Fuzzing Différentiel le WebAssembly Gilang Mentari Hamidy This thesis is a public document and does not contain any confidential information. Cette thèse est un document public et ne contient aucun information confidentielle. Thesis submitted in partial fulfillment of the requirements for the degree of Master of Science in Technology. Antibes, 27 July 2020 Supervisor: Prof. Davide Balzarotti, EURECOM Co-Supervisor: Prof. Jan-Erik Ekberg, Aalto University Copyright © 2020 Gilang Mentari Hamidy Aalto University - School of Science EURECOM Master’s Programme in Security and Cloud Computing Abstract Author Gilang Mentari Hamidy Title Differential Fuzzing the WebAssembly School School of Science Degree programme Master of Science Major Security and Cloud Computing (SECCLO) Code SCI3084 Supervisor Prof. Davide Balzarotti, EURECOM Prof. Jan-Erik Ekberg, Aalto University Level Master’s thesis Date 27 July 2020 Pages 133 Language English Abstract WebAssembly, colloquially known as Wasm, is a specification for an intermediate representation that is suitable for the web environment, particularly in the client-side. It provides a machine abstraction and hardware-agnostic instruction sets, where a high-level programming language can target the compilation to the Wasm instead of specific hardware architecture. The JavaScript engine implements the Wasm specification and recompiles the Wasm instruction to the target machine instruction where the program is executed. Technically, Wasm is similar to a popular virtual machine bytecode, such as Java Virtual Machine (JVM) or Microsoft Intermediate Language (MSIL).
    [Show full text]
  • Libffi This Manual Is for Libffi, a Portable Foreign-Function Interface Library
    Libffi This manual is for Libffi, a portable foreign-function interface library. Copyright c 2008, 2010, 2011 Red Hat, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. A copy of the license is included in the section entitled \GNU General Public License". Chapter 2: Using libffi 1 1 What is libffi? Compilers for high level languages generate code that follow certain conventions. These conventions are necessary, in part, for separate compilation to work. One such convention is the calling convention. The calling convention is a set of assumptions made by the compiler about where function arguments will be found on entry to a function. A calling convention also specifies where the return value for a function is found. The calling convention isalso sometimes called the ABI or Application Binary Interface. Some programs may not know at the time of compilation what arguments are to be passed to a function. For instance, an interpreter may be told at run-time about the number and types of arguments used to call a given function. `Libffi' can be used in such programs to provide a bridge from the interpreter program to compiled code. The `libffi' library provides a portable, high level programming interface to various calling conventions. This allows a programmer to call any function specified by a call interface description at run time. FFI stands for Foreign Function Interface. A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language.
    [Show full text]
  • 04 ISC 228-TESIS.Pdf
    UTN –FICA Análisis y Estudio de Tecnología Ruby on Rails con bases de datos Postgresql para Aplicaciones Web 2.0 UNIVERSIDAD TÉCNICA DEL NORTE Facultad de Ingeniería en Ciencias Aplicadas Carrera de Ingeniería en Sistemas Computacionales TESIS PREVIA OBTENCIÓN DEL TITULO DE INGENIERO EN SISTEMAS COMPUTACIONALES Tema: “Análisis y Estudio de Tecnología Ruby on Rails con bases de datos Postgres para Aplicaciones Web 2.0” Aplicativo: Implementación del Portal Web 2.0 para la Mancomunidad de la Cuenca del Río Mira AUTOR : CHRISTIAN FERNANDO REALPE ROSERO. DIRECTOR : ING. MARCO PUSDÁ. IBARRA – ECUADOR, 2012 Christian Fernando Realpe Rosero Implementación del Portal Web 2.0 para la Mancomunidad de la Cuenca del Río Mira Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/) UTN –FICA Análisis y Estudio de Tecnología Ruby on Rails con bases de datos Postgresql para Aplicaciones Web 2.0 Certifico: Que la Tesis previa a la obtención del título de Ingeniería en Sistemas Computacionales con el tema “Análisis y Estudio de Tecnología Ruby on Rails con bases de datos Postgres para Aplicaciones Web 2.0”con el aplicativo “Implementación del Portal Web 2.0 para la Mancomunidad de la Cuenca del Río Mira” ha sido desarrollada y terminada en su totalidad por el Sr. Christian Fernando Realpe Rosero con C.C. 100251109-3 bajo mi supervisión para lo cual firmo en constancia. Atentamente, Ing. Marco Pusdá DIRECTOR DE TESIS Christian Fernando Realpe Rosero Implementación del Portal Web 2.0 para la Mancomunidad de la Cuenca del Río Mira Print to PDF without this message by purchasing novaPDF (http://www.novapdf.com/) UTN –FICA Análisis y Estudio de Tecnología Ruby on Rails con bases de datos Postgresql para Aplicaciones Web 2.0 UNIVERSIDAD TÉCNICA DEL NORTE CESIÓN DE DERECHOS DE AUTOR DEL TRABAJO DE INVESTIGACIÓN A FAVOR DE LA UNIVERSIDAD TÉCNICA DEL NORTE Yo, CHRISTIAN FERNANDO REALPE ROSERO, con cedula de identidad Nro.
    [Show full text]
  • Authentication in the Mesh with Webassembly
    Authentication in the mesh with WebAssembly Sondre Halvorsen Master’s Thesis, Spring 2021 Thesis submitted for the degree of Master in Informatics: programming and system architecture 30 credits Department of Informatics Faculty of mathematics and natural sciences UNIVERSITY OF OSLO Spring 2021 © 2021 Sondre Halvorsen Master Thesis http://www.duo.uio.no/ Printed: Reprosentralen, University of Oslo Abstract At the start of the last decade Marc Andreessen stated in his now famous blog entry; ‘Software is eating the world’ [173], and as software is eating the world, problems stemming from its security, or lack thereof, is eating it as well. Or- ganisations are increasingly moving to the cloud and adopting new architecture patterns in this new environment, such as cloud native and microservice ar- chitecture. While moving to the cloud generally results in better security for organisations, due to large professional platforms, microservice architectures in- troduce some new problems in regards to cross-cutting concerns like security, robustness and observabiltity. Service mesh is a technology that aims to provide cloud native and application agnostic solution to many of the challenges with micro service architectures. In parallel with the cloud native revolution there has been innovations in areas like security as well. Authentication, authoriza- tion, and access control have changed drastically, with new requirements for how users want to manage and use their identity. Zero Trust Architectures is an example of this drawn to its logical conclusion where no connection is trusted by default. Unfortunately security breaches stemming from poor implementation of security protocols and frameworks rank among the highest still.
    [Show full text]
  • Dell Wyse Management Suite Version 2.1 Third Party Licenses
    Dell Wyse Management Suite Version 2.1 Third Party Licenses October 2020 Rev. A01 Notes, cautions, and warnings NOTE: A NOTE indicates important information that helps you make better use of your product. CAUTION: A CAUTION indicates either potential damage to hardware or loss of data and tells you how to avoid the problem. WARNING: A WARNING indicates a potential for property damage, personal injury, or death. © 2020 Dell Inc. or its subsidiaries. All rights reserved. Dell, EMC, and other trademarks are trademarks of Dell Inc. or its subsidiaries. Other trademarks may be trademarks of their respective owners. Contents Chapter 1: Third party licenses...................................................................................................... 4 Contents 3 1 Third party licenses The table provides the details about third party licenses for Wyse Management Suite 2.1. Table 1. Third party licenses Component name License type jdk1.8.0_112 Oracle Binary Code License jre11.0.5 Oracle Binary Code License bootstrap-2.3.2 Apache License, Version 2.0 backbone-1.3.3 MIT MIT aopalliance-1.0.jar Public Domain aspectjweaver-1.7.2.jar Eclipse Public licenses- v 1.0 bcprov-jdk16-1.46.jar MIT commons-codec-1.9.jar Apache License, Version 2.0 commons-logging-1.1.1.jar Apache License, Version 2.0 hamcrest-core-1.3.jar BSD-3 Clause jackson-annotations.2.10.2.jar Apache License, Version 2.0 The Apache Software License, Version 2.0 jackson-core.2.10.2.jar Apache License, Version 2.0 The Apache Software License, Version 2.0 jackson-databind.2.10.2.jar Apache License, Version 2.0 The Apache Software License, Version 2.0 log4j-1.2.17.jar Apache License, Version 2.0 mosquitto-3.1 Eclipse Public licenses- v 1.0 Gradle Wrapper 2.14 Apache 2.0 License Gradle Wrapper 3.3 Apache 2.0 License HockeySDK-Ios3.7.0 MIT Relayrides / pushy - v0.9.3 MIT zlib-1.2.8 zlib license yaml-cpp-0.5.1 MIT libssl.dll (1.1.1c) Open SSL License 4 Third party licenses Table 1.
    [Show full text]
  • WHO Guidance on Management of Snakebites
    GUIDELINES FOR THE MANAGEMENT OF SNAKEBITES 2nd Edition GUIDELINES FOR THE MANAGEMENT OF SNAKEBITES 2nd Edition 1. 2. 3. 4. ISBN 978-92-9022- © World Health Organization 2016 2nd Edition All rights reserved. Requests for publications, or for permission to reproduce or translate WHO publications, whether for sale or for noncommercial distribution, can be obtained from Publishing and Sales, World Health Organization, Regional Office for South-East Asia, Indraprastha Estate, Mahatma Gandhi Marg, New Delhi-110 002, India (fax: +91-11-23370197; e-mail: publications@ searo.who.int). The designations employed and the presentation of the material in this publication do not imply the expression of any opinion whatsoever on the part of the World Health Organization concerning the legal status of any country, territory, city or area or of its authorities, or concerning the delimitation of its frontiers or boundaries. Dotted lines on maps represent approximate border lines for which there may not yet be full agreement. The mention of specific companies or of certain manufacturers’ products does not imply that they are endorsed or recommended by the World Health Organization in preference to others of a similar nature that are not mentioned. Errors and omissions excepted, the names of proprietary products are distinguished by initial capital letters. All reasonable precautions have been taken by the World Health Organization to verify the information contained in this publication. However, the published material is being distributed without warranty of any kind, either expressed or implied. The responsibility for the interpretation and use of the material lies with the reader. In no event shall the World Health Organization be liable for damages arising from its use.
    [Show full text]
  • Concert CHS Bands Turn Down
    \ — *♦ ll < l e a t h e r n ^la. M*».Pr«dp. „ 34 60 O-OQ -a. 0.00 U> A{,r* i 80 '~ir~S7 61 0.00 f ‘jZH-45 «0 0.00 QUOTE jO.OO f l u . t r z z U i? “Whoe’er excels In what we Jtw 1 '^dTJO Tvaeo ,49 0.06 prize Appears a hero in our eyes.” Bl Jonathan Swift . , 'y > wtmT H Y E A R — N o . 46 14 Pages This Week CHELSEA, MICHIGAN, THURSDAY, MAY 8, 1969 10c per copy SUBSCRIPTION: $8.00 PER YEAR r « P ■Wf' ’ concert Named for MichiganWeek Michigan Week has been described by one - of America’s leading advertising agencies as Turn Down “Michigan’s biggest public .rela­ tions program, ”, While, the actual celebration covers eight days beginning the CHS Bands Saturday - preceding the ~nKlrd Sunday in May. every_yeap$_it: is actually the clijnax of a year­ ,i«a High school Symphony Other program items will in long program in which thousands y Bands will present a elude- Amparita -.Roea . (Spanish of Michigan citizenBf volunteer concert Monday,. May March) .by Texidor; Finale from their time and effort' for .the. bet­ Sym phony-No. 1 in G-minor by terment of their communities and tae-Third of All School Funds ; nrozrsflit set for '8 p.m. in Kalinnikov; Beguine for Band by state,, the objectives of Michigan i f f & school a,uditori- Osser by the Symphony Band, .YY.GvKi - Eliminated Only 724 Voters directed by, D. Keith Lawson. By & feature Heidi Sprague as Back 1953_a group of Michi She will plarCecile Cha- Other Symphony Band selections gan businessmen, - industrialists; School- Dlitrict voters I Mills said that the schools could >g Concertino for flute, acr include Second Suitfe in F by educators and others decided that overwhelming# defeated a school not operate ^at the__ 1968-69 1evel ' nied by -6 section of - the Holst,_ March, Sbng Without something ibig should be done by miliage yproposaT tharw uld" hdve next year with the same funds increased schooUtaxes by 3.83 mills ,-i&ny Band.
    [Show full text]
  • Php Tutorial
    PHP About the Tutorial The PHP Hypertext Preprocessor (PHP) is a programming language that allows web developers to create dynamic content that interacts with databases. PHP is basically used for developing web-based software applications. This tutorial will help you understand the basics of PHP and how to put it in practice. Audience This tutorial has been designed to meet the requirements of all those readers who are keen to learn the basics of PHP. Prerequisites Before proceeding with this tutorial, you should have a basic understanding of computer programming, Internet, Database, and MySQL. Copyright & Disclaimer © Copyright 2016 by Tutorials Point (I) Pvt. Ltd. All the content and graphics published in this e-book are the property of Tutorials Point (I) Pvt. Ltd. The user of this e-book is prohibited to reuse, retain, copy, distribute or republish any contents or a part of contents of this e-book in any manner without written consent of the publisher. We strive to update the contents of our website and tutorials as timely and as precisely as possible, however, the contents may contain inaccuracies or errors. Tutorials Point (I) Pvt. Ltd. provides no guarantee regarding the accuracy, timeliness or completeness of our website or its contents including this tutorial. If you discover any errors on our website or in this tutorial, please notify us at [email protected] i PHP Table of Contents About the Tutorial ...........................................................................................................................................
    [Show full text]
  • CFFI Documentation Release 0.8.6
    CFFI Documentation Release 0.8.6 Armin Rigo, Maciej Fijalkowski May 19, 2015 Contents 1 Installation and Status 3 1.1 Platform-specific instructions......................................4 2 Examples 5 2.1 Simple example (ABI level).......................................5 2.2 Real example (API level).........................................5 2.3 Struct/Array Example..........................................6 2.4 What actually happened?.........................................6 3 Distributing modules using CFFI7 3.1 Cleaning up the __pycache__ directory.................................7 4 Reference 9 4.1 Declaring types and functions......................................9 4.2 Loading libraries............................................. 10 4.3 The verification step........................................... 10 4.4 Working with pointers, structures and arrays.............................. 12 4.5 Python 3 support............................................. 14 4.6 An example of calling a main-like thing................................. 15 4.7 Function calls............................................... 15 4.8 Variadic function calls.......................................... 16 4.9 Callbacks................................................. 17 4.10 Misc methods on ffi........................................... 18 4.11 Unimplemented features......................................... 20 4.12 Debugging dlopen’ed C libraries..................................... 20 4.13 Reference: conversions.......................................... 21 4.14 Reference:
    [Show full text]
  • Compiler Fuzzing: How Much Does It Matter?
    Compiler Fuzzing: How Much Does It Matter? MICHAËL MARCOZZI∗, QIYI TANG∗, ALASTAIR F. DONALDSON, and CRISTIAN CADAR, Imperial College London, United Kingdom Despite much recent interest in randomised testing (fuzzing) of compilers, the practical impact of fuzzer-found compiler bugs on real-world applications has barely been assessed. We present the first quantitative and qualitative study of the tangible impact of miscompilation bugs in a mature compiler. We follow a rigorous methodology where the bug impact over the compiled application is evaluated based on (1) whether the bug appears to trigger during compilation; (2) the extent to which generated assembly code changes syntactically due to triggering of the bug; and (3) whether such changes cause regression test suite failures, or whether we can manually find application inputs that trigger execution divergence due to such changes. Thestudy is conducted with respect to the compilation of more than 10 million lines of C/C++ code from 309 Debian 155 packages, using 12% of the historical and now fixed miscompilation bugs found by four state-of-the-art fuzzers in the Clang/LLVM compiler, as well as 18 bugs found by human users compiling real code or as a by-product of formal verification efforts. The results show that almost half of the fuzzer-found bugs propagate tothe generated binaries for at least one package, in which case only a very small part of the binary is typically affected, yet causing two failures when running the test suites of all the impacted packages. User-reported and formal verification bugs do not exhibit a higher impact, with a lower rate of triggered bugs andonetest failure.
    [Show full text]
  • Eclipse (Software) 1 Eclipse (Software)
    Eclipse (software) 1 Eclipse (software) Eclipse Screenshot of Eclipse 3.6 Developer(s) Free and open source software community Stable release 3.6.2 Helios / 25 February 2011 Preview release 3.7M6 / 10 March 2011 Development status Active Written in Java Operating system Cross-platform: Linux, Mac OS X, Solaris, Windows Platform Java SE, Standard Widget Toolkit Available in Multilingual Type Software development License Eclipse Public License Website [1] Eclipse is a multi-language software development environment comprising an integrated development environment (IDE) and an extensible plug-in system. It is written mostly in Java and can be used to develop applications in Java and, by means of various plug-ins, other programming languages including Ada, C, C++, COBOL, Perl, PHP, Python, Ruby (including Ruby on Rails framework), Scala, Clojure, and Scheme. The IDE is often called Eclipse ADT for Ada, Eclipse CDT for C/C++, Eclipse JDT for Java, and Eclipse PDT for PHP. The initial codebase originated from VisualAge.[2] In its default form it is meant for Java developers, consisting of the Java Development Tools (JDT). Users can extend its abilities by installing plug-ins written for the Eclipse software framework, such as development toolkits for other programming languages, and can write and contribute their own plug-in modules. Released under the terms of the Eclipse Public License, Eclipse is free and open source software. It was one of the first IDEs to run under GNU Classpath and it runs without issues under IcedTea. Eclipse (software) 2 Architecture Eclipse employs plug-ins in order to provide all of its functionality on top of (and including) the runtime system, in contrast to some other applications where functionality is typically hard coded.
    [Show full text]
  • VSI's Open Source Strategy
    VSI's Open Source Strategy Plans and schemes for Open Source so9ware on OpenVMS Bre% Cameron / Camiel Vanderhoeven April 2016 AGENDA • Programming languages • Cloud • Integraon technologies • UNIX compability • Databases • Analy;cs • Web • Add-ons • Libraries/u;li;es • Other consideraons • SoDware development • Summary/conclusions tools • Quesons Programming languages • Scrip;ng languages – Lua – Perl (probably in reasonable shape) – Tcl – Python – Ruby – PHP – JavaScript (Node.js and friends) – Also need to consider tools and packages commonly used with these languages • Interpreted languages – Scala (JVM) – Clojure (JVM) – Erlang (poten;ally a good fit with OpenVMS; can get good support from ESL) – All the above are seeing increased adop;on 3 Programming languages • Compiled languages – Go (seeing rapid adop;on) – Rust (relavely new) – Apple Swi • Prerequisites (not all are required in all cases) – LLVM backend – Tweaks to OpenVMS C and C++ compilers – Support for latest language standards (C++) – Support for some GNU C/C++ extensions – Updates to OpenVMS C RTL and threads library 4 Programming languages 1. JavaScript 2. Java 3. PHP 4. Python 5. C# 6. C++ 7. Ruby 8. CSS 9. C 10. Objective-C 11. Perl 12. Shell 13. R 14. Scala 15. Go 16. Haskell 17. Matlab 18. Swift 19. Clojure 20. Groovy 21. Visual Basic 5 See h%p://redmonk.com/sogrady/2015/07/01/language-rankings-6-15/ Programming languages Growing programming languages, June 2015 Steve O’Grady published another edi;on of his great popularity study on programming languages: RedMonk Programming Language Rankings: June 2015. As usual, it is a very valuable piece. There are many take-away from this research.
    [Show full text]