Language-side Foreign Function Interfaces with NativeBoost

Size: px
Start display at page:

Download "Language-side Foreign Function Interfaces with NativeBoost"

Transcription

1 Language-side Foreign Function Interfaces with NativeBoost IWST 2013 Camillo Bruni, Luc Fabresse, Stéphane Ducasse, Igor Stasenko

2 Outline 1.Context 2.Existing Solutions 3.NativeBoost 4.Speed Comparison of NativeBoost with other FFIs 5.NativeBoost Internals 6.Conclusion & Future Work 2

3 Context Language Cairo OpenGL Chipmunk Virtual Machine (VM)... LibC 3

4 Context Language Cairo OpenGL Chipmunk Virtual Machine (VM)... LibC How to interact with external libraries? 4

5 Existing Solutions Language-side Library VM Extension VM Plugin Foreign Function Interface VM-level Language-level 5

6 Existing Solutions Language-side Library costly VM Extension VM Plugin Foreign Function Interface VM-level Language-level 6

7 Existing Solutions Language-side Library VM Extension VM Plugin costly low-level Foreign Function Interface VM-level Language-level 7

8 Existing Solutions Language-side Library VM Extension VM Plugin costly low-level Foreign Function Interface VM-level Language-level fast slow 8

9 NativeBoost A language-side and fast FFI implementation 9

10 Language-side Extensible Easy to use no VM code needed no low-level code (C wrapper) needed 10

11 Fast Transparent generation of Assembly code from the language-side 11

12 NativeBoost Example char* getenv(const char*) 12

13 NativeBoost Example char* getenv(const char*) 13

14 NativeBoost Example Regular Smalltalk method with one argument 14

15 NativeBoost Example A pragma indicating that #primitivenativecall of #NativeBoost plugin should be executed when this method is executed 15

16 NativeBoost Example 16

17 NativeBoost Example char* getenv(const char*) types annotation used to generate marshalling code 17

18 NativeBoost Example the values to be passed when calling out 18

19 NativeBoost Example the external library address in which the function is looked up 19

20 Speed Comparisons NativeBoost Alien FFI C-FFI LuaJIT Callouts Marshalling Callbacks 20

21 Callout Evaluation Average time calling out uint clock(void) slower 150% 100% faster 50% 0% NativeBoost Alien C-FFI LuaJIT 21

22 Marshalling int int abs(int) 300% 200% 100% 0% NativeBoost Alien C-FFI LuaJIT 22

23 Marshalling char*/string 400% int printf(char*,int,int) 300% 200% 100% 0% NativeBoost Alien C-FFI LuaJIT 23

24 Marshalling char*/string 1000% char* getenv( char* ) 300% 100% NativeBoost Alien C-FFI LuaJIT 24

25 Marshalling char*/string 1000% char* getenv( char* ) 300% 100% NativeBoost Alien C-FFI LuaJIT 25

26 Marshalling structs 1000% void! cairo_matrix_multiply (! cairo_matrix_t *result,! cairo_matrix_t *a,! cairo_matrix_t *b) 400% 100% NativeBoost Alien C-FFI LuaJIT 26

27 Callbacks Evaluation void qsort (! void *base,! size_t nel,! size_t width,! int (*compare)(const void*, const void*)) 100% 30% not supported NativeBoost Alien C-FFI LuaJIT 27

28 Insights into NativeBoost Internals NBExample getenv: PATH 28

29 Insights into NativeBoost Internals NBExample getenv: PATH 29

30 Insights into NativeBoost Internals NBExample getenv: PATH NativeBoost Plugin Virtual Machine (VM) 30

31 Insights into NativeBoost Internals NBExample getenv: PATH NativeBoost Plugin Virtual Machine (VM) Fail if no native code associated with #getenv: 31

32 Insights into NativeBoost Internals NBExample getenv: PATH NativeBoost Plugin Virtual Machine (VM) 1. generate native code for marshalling, associate it with #getenv: 3. restart the method execution 32

33 Insights into NativeBoost Internals NBExample getenv: PATH NativeBoost Plugin Virtual Machine (VM) activate the native code associated with #getenv: 33

34 Conclusion NativeBoost-FFI is: Language-side: extensible, high-level code only Fast compared to other Smalltalk FFI Needs optimizations on Callbacks but that would require strong VM support 34

35 Future Work Improve NativeBoost Callback performance Reuse Alien s VM Callback support? Better integration of NativeBoost with the JIT Do not leave JIT-mode when activating a NB method 35

36 Language-side Foreign Function Interfaces with NativeBoost IWST 2013 Camillo Bruni, Luc Fabresse, Stéphane Ducasse, Igor Stasenko

MoonGen. A Scriptable High-Speed Packet Generator Design and Implementation. Paul Emmerich. January 30th, 2016 FOSDEM 2016

MoonGen. A Scriptable High-Speed Packet Generator Design and Implementation. Paul Emmerich. January 30th, 2016 FOSDEM 2016 MoonGen A Scriptable High-Speed Packet Generator Design and Implementation Paul Emmerich January 30th, 2016 FOSDEM 2016 Chair for Network Architectures and Services Department of Informatics Paul Emmerich

More information

Lua as a business logic language in high load application. Ilya Martynov ilya@iponweb.net CTO at IPONWEB

Lua as a business logic language in high load application. Ilya Martynov ilya@iponweb.net CTO at IPONWEB Lua as a business logic language in high load application Ilya Martynov ilya@iponweb.net CTO at IPONWEB Company background Ad industry Custom development Technical platform with multiple components Custom

More information

Reading and Writing PCD Files The PCD File Format The Grabber Interface Writing a Custom Grabber PCL :: I/O. Suat Gedikli, Nico Blodow

Reading and Writing PCD Files The PCD File Format The Grabber Interface Writing a Custom Grabber PCL :: I/O. Suat Gedikli, Nico Blodow PCL :: I/O Suat Gedikli, Nico Blodow July 1, 2011 Outline 1. Reading and Writing PCD Files 2. The PCD File Format 3. The Grabber Interface 4. Writing a Custom Grabber global functions in the namespace

More information

language 1 (source) compiler language 2 (target) Figure 1: Compiling a program

language 1 (source) compiler language 2 (target) Figure 1: Compiling a program CS 2112 Lecture 27 Interpreters, compilers, and the Java Virtual Machine 1 May 2012 Lecturer: Andrew Myers 1 Interpreters vs. compilers There are two strategies for obtaining runnable code from a program

More information

Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters

Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters Interpreters and virtual machines Michel Schinz 2007 03 23 Interpreters Interpreters Why interpreters? An interpreter is a program that executes another program, represented as some kind of data-structure.

More information

Fast Arithmetic Coding (FastAC) Implementations

Fast Arithmetic Coding (FastAC) Implementations Fast Arithmetic Coding (FastAC) Implementations Amir Said 1 Introduction This document describes our fast implementations of arithmetic coding, which achieve optimal compression and higher throughput by

More information

Generating Serialisation Code with Clang

Generating Serialisation Code with Clang EURO-LLVM CONFERENCE 12 th April 2012 Wayne Palmer Generating Serialisation Code with Clang 1 INTRODUCTION TO THE QUANTITATIVE ANALYTICS LIBRARY A single C++ library of nearly 10 million lines of code.

More information

Code and Usage Description. A.Konstantinov

Code and Usage Description. A.Konstantinov NORDUGRID NORDUGRID-TECH-9 25/9/2009 THE HTTP(S,G) AND SOAP SERVER/FRAMEWORK Code and Usage Description A.Konstantinov aleks@fys.uio.no Contents 1 Introduction 3 2 Classes 3 2.1 HTTPS_Connector............................................

More information

SQLITE C/C++ TUTORIAL

SQLITE C/C++ TUTORIAL http://www.tutorialspoint.com/sqlite/sqlite_c_cpp.htm SQLITE C/C++ TUTORIAL Copyright tutorialspoint.com Installation Before we start using SQLite in our C/C++ programs, we need to make sure that we have

More information

Effective Java Programming. efficient software development

Effective Java Programming. efficient software development Effective Java Programming efficient software development Structure efficient software development what is efficiency? development process profiling during development what determines the performance of

More information

Using AllJoyn with Apache Cordova, Python & Node

Using AllJoyn with Apache Cordova, Python & Node Using AllJoyn with Apache Cordova, Python & Node Ivan R. Judson, PhD October 2014, Microsoft 13 October 2015 AllSeen Alliance 1 Agenda 1. Background 2. Cordova Plugin 3. Language Bindings Python Bindings

More information

Tachyon: a Meta-circular Optimizing JavaScript Virtual Machine

Tachyon: a Meta-circular Optimizing JavaScript Virtual Machine Tachyon: a Meta-circular Optimizing JavaScript Virtual Machine Maxime Chevalier-Boisvert Erick Lavoie Marc Feeley Bruno Dufour {chevalma, lavoeric, feeley, dufour}@iro.umontreal.ca DIRO - Université de

More information

CSC230 Getting Starting in C. Tyler Bletsch

CSC230 Getting Starting in C. Tyler Bletsch CSC230 Getting Starting in C Tyler Bletsch What is C? The language of UNIX Procedural language (no classes) Low-level access to memory Easy to map to machine language Not much run-time stuff needed Surprisingly

More information

Creating Synergies on the Cloudbox. Mohan Sundar Samsung Electronics

Creating Synergies on the Cloudbox. Mohan Sundar Samsung Electronics Creating Synergies on the Cloudbox Mohan Sundar Samsung Electronics Index Index Background What s Cloudbox? How to use Cloudbox? Cloudbox Internals Sample App (Unified Single View) Summary Q&A 3 Background

More information

Libmonitor: A Tool for First-Party Monitoring

Libmonitor: A Tool for First-Party Monitoring Libmonitor: A Tool for First-Party Monitoring Mark W. Krentel Dept. of Computer Science Rice University 6100 Main St., Houston, TX 77005 krentel@rice.edu ABSTRACT Libmonitor is a library that provides

More information

Embedded Software Development with MPS

Embedded Software Development with MPS Embedded Software Development with MPS Markus Voelter independent/itemis The Limitations of C and Modeling Tools Embedded software is usually implemented in C. The language is relatively close to the hardware,

More information

Security types to the rescue

Security types to the rescue Security types to the rescue p. 1 Security types to the rescue David Wagner and Rob Johnson {daw,rtjohnso}@cs.berkeley.edu University of California, Berkeley Security types to the rescue p. 2 Problem statement

More information

Research and Design of Universal and Open Software Development Platform for Digital Home

Research and Design of Universal and Open Software Development Platform for Digital Home Research and Design of Universal and Open Software Development Platform for Digital Home CaiFeng Cao School of Computer Wuyi University, Jiangmen 529020, China cfcao@126.com Abstract. With the development

More information

CS3813 Performance Monitoring Project

CS3813 Performance Monitoring Project CS3813 Performance Monitoring Project Owen Kaser October 8, 2014 1 Introduction In this project, you should spend approximately 20 hours to experiment with Intel performance monitoring facilities, and

More information

A deeper look at Inline functions

A deeper look at Inline functions A deeper look at Inline functions I think it s safe to say that all Overload readers know what C++ inline functions are. When we declare a function or member function as inline we are trying to avoid the

More information

Written by the Red Hat Eclipse Engineering Team Revision 3. October 2003

Written by the Red Hat Eclipse Engineering Team Revision 3. October 2003 ! " $#&%'() Abstract This white paper provides information on Red Hat Developer Suite, a member of the Red Hat Applications product family. It describes the goals of Red Hat Developer Suite, the Eclipse

More information

PARALLEL JAVASCRIPT. Norm Rubin (NVIDIA) Jin Wang (Georgia School of Technology)

PARALLEL JAVASCRIPT. Norm Rubin (NVIDIA) Jin Wang (Georgia School of Technology) PARALLEL JAVASCRIPT Norm Rubin (NVIDIA) Jin Wang (Georgia School of Technology) JAVASCRIPT Not connected with Java Scheme and self (dressed in c clothing) Lots of design errors (like automatic semicolon

More information

A Native Client for the Hadoop Distributed Filesystem by Colin P. McCabe

A Native Client for the Hadoop Distributed Filesystem by Colin P. McCabe A Native Client for the Hadoop Distributed Filesystem by Colin P. McCabe About Me I work on HDFS and related storage technologies at Cloudera. Committer on the HDFS and Hadoop projects. Previously worked

More information

CUDA Programming. Week 4. Shared memory and register

CUDA Programming. Week 4. Shared memory and register CUDA Programming Week 4. Shared memory and register Outline Shared memory and bank confliction Memory padding Register allocation Example of matrix-matrix multiplication Homework SHARED MEMORY AND BANK

More information

1. Overview of the Java Language

1. Overview of the Java Language 1. Overview of the Java Language What Is the Java Technology? Java technology is: A programming language A development environment An application environment A deployment environment It is similar in syntax

More information

Lecture 1 Introduction to Android

Lecture 1 Introduction to Android These slides are by Dr. Jaerock Kwon at. The original URL is http://kettering.jrkwon.com/sites/default/files/2011-2/ce-491/lecture/alecture-01.pdf so please use that instead of pointing to this local copy

More information

4GL CONNECTOR OPEN SOURCE TECHNOLOGY AND SERVICES TO BRING INFORMIX 4GL CODE TO THE JAVA ENTERPRISE APPLICATION ENVIRONMENT

4GL CONNECTOR OPEN SOURCE TECHNOLOGY AND SERVICES TO BRING INFORMIX 4GL CODE TO THE JAVA ENTERPRISE APPLICATION ENVIRONMENT 4GL CONNECTOR OPEN SOURCE TECHNOLOGY AND SERVICES TO BRING INFORMIX 4GL CODE TO THE JAVA ENTERPRISE APPLICATION ENVIRONMENT EXECUTIVE SUMMARY In today's Services Oriented Architecture SOA environment,

More information

Abstractions from Multimedia Hardware. Libraries. Abstraction Levels

Abstractions from Multimedia Hardware. Libraries. Abstraction Levels Abstractions from Multimedia Hardware Chapter 2: Basics Chapter 3: Multimedia Systems Communication Aspects and Services Chapter 4: Multimedia Systems Storage Aspects Chapter 5: Multimedia Usage and Applications

More information

Android and OpenCV Tutorial

Android and OpenCV Tutorial Android and OpenCV Tutorial Computer Vision Lab Tutorial 26 September 2013 Lorenz Meier, Amaël Delaunoy, Kalin Kolev Institute of Visual Computing Tutorial Content Strengths / Weaknesses of Android Java

More information

Help on the Embedded Software Block

Help on the Embedded Software Block Help on the Embedded Software Block Powersim Inc. 1. Introduction The Embedded Software Block is a block that allows users to model embedded devices such as microcontrollers, DSP, or other devices. It

More information

Tegra Android Accelerometer Whitepaper

Tegra Android Accelerometer Whitepaper Tegra Android Accelerometer Whitepaper Version 5-1 - Contents INTRODUCTION 3 COORDINATE SPACE GLOSSARY 4 ACCELEROMETER CANONICAL AXES 6 WORKING WITH ACCELEROMETER DATA 7 POWER CONSERVATION 10 SUPPORTING

More information

CSCI 3136 Principles of Programming Languages

CSCI 3136 Principles of Programming Languages CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University Winter 2013 CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University

More information

This is DEEPerent: Tracking App behaviors with (Nothing changed) phone for Evasive android malware

This is DEEPerent: Tracking App behaviors with (Nothing changed) phone for Evasive android malware This is DEEPerent: Tracking App behaviors with (Nothing changed) phone for Evasive android malware What I will talk about.. Challenges we faced on android malware analysis: Fast code analysis (Reversing)

More information

Specific Simple Network Management Tools

Specific Simple Network Management Tools Specific Simple Network Management Tools Jürgen Schönwälder University of Osnabrück Albrechtstr. 28 49069 Osnabrück, Germany Tel.: +49 541 969 2483 Email: Web:

More information

C Programming Review & Productivity Tools

C Programming Review & Productivity Tools Review & Productivity Tools Giovanni Agosta Piattaforme Software per la Rete Modulo 2 Outline Preliminaries 1 Preliminaries 2 Function Pointers Variadic Functions 3 Build Automation Code Versioning 4 Preliminaries

More information

Reach 4 million Unity developers

Reach 4 million Unity developers Reach 4 million Unity developers with your Android library Vitaliy Zasadnyy Senior Unity Dev @ GetSocial Manager @ GDG Lviv Ankara Android Dev Days May 11-12, 2015 Why Unity? Daily Users 0 225 M 450 M

More information

Affdex SDK for Windows!

Affdex SDK for Windows! Affdex SDK for Windows SDK Developer Guide 1 Introduction Affdex SDK is the culmination of years of scientific research into emotion detection, validated across thousands of tests worldwide on PC platforms,

More information

ios Audio Programming Guide

ios Audio Programming Guide ios Audio Programming Guide A Guide to Developing Applications for Real-time Audio Processing and Playback izotope, Inc. izotope ios Audio Programming Guide This document is meant as a guide to developing

More information

Lecture 10: Dynamic Memory Allocation 1: Into the jaws of malloc()

Lecture 10: Dynamic Memory Allocation 1: Into the jaws of malloc() CS61: Systems Programming and Machine Organization Harvard University, Fall 2009 Lecture 10: Dynamic Memory Allocation 1: Into the jaws of malloc() Prof. Matt Welsh October 6, 2009 Topics for today Dynamic

More information

MYPY: A PYTHON VARIANT WITH SEAMLESS DYNAMIC AND STATIC TYPING. Jukka Lehtosalo University of Cambridge Computer Laboratory

MYPY: A PYTHON VARIANT WITH SEAMLESS DYNAMIC AND STATIC TYPING. Jukka Lehtosalo University of Cambridge Computer Laboratory MYPY: A PYTHON VARIANT WITH SEAMLESS DYNAMIC AND STATIC TYPING Jukka Lehtosalo University of Cambridge Computer Laboratory SPEAKER BIO 2000-2006 Software engineer (QPR Software and Kielikone) 2007-2009

More information

Recursion vs. Iteration Eliminating Recursion

Recursion vs. Iteration Eliminating Recursion Recursion vs. Iteration Eliminating Recursion continued CS 311 Data Structures and Algorithms Lecture Slides Monday, February 16, 2009 Glenn G. Chappell Department of Computer Science University of Alaska

More information

Goals, Processes, and Development Effort

Goals, Processes, and Development Effort Pharo s Vision Goals, Processes, and Development Effort http://www.pharo-project.org Stéphane Ducasse stephane.ducasse@inria.fr Marcus Denker marcus.denker@inria.fr Damien Pollet damien.pollet@inria.fr

More information

Java CPD (I) Frans Coenen Department of Computer Science

Java CPD (I) Frans Coenen Department of Computer Science Java CPD (I) Frans Coenen Department of Computer Science Content Session 1, 12:45-14:30 (First Java Programme, Inheritance, Arithmetic) Session 2, 14:45-16:45 (Input and Programme Constructs) Materials

More information

Operating Systems. Privileged Instructions

Operating Systems. Privileged Instructions Operating Systems Operating systems manage processes and resources Processes are executing instances of programs may be the same or different programs process 1 code data process 2 code data process 3

More information

Checking Browser Settings, and Basic System Requirements for QuestionPoint

Checking Browser Settings, and Basic System Requirements for QuestionPoint Checking Browser Settings, and Basic System Requirements for QuestionPoint This document covers basic IE settings and system requirements necessary for QuestionPoint. These settings and requirements apply

More information

System Structures. Services Interface Structure

System Structures. Services Interface Structure System Structures Services Interface Structure Operating system services (1) Operating system services (2) Functions that are helpful to the user User interface Command line interpreter Batch interface

More information

Introduction Object-Oriented Network Programming CORBA addresses two challenges of developing distributed systems: 1. Making distributed application development no more dicult than developing centralized

More information

Keil C51 Cross Compiler

Keil C51 Cross Compiler Keil C51 Cross Compiler ANSI C Compiler Generates fast compact code for the 8051 and it s derivatives Advantages of C over Assembler Do not need to know the microcontroller instruction set Register allocation

More information

International Relations Program Integrated Assessment Plan April 27, 2007

International Relations Program Integrated Assessment Plan April 27, 2007 W International Relations Program Integrated Assessment Plan April 27, 2007 I. Student Learning Goals Goal 1: Students will acquire an interdisciplinary understanding of international relations that provides

More information

McGraw-Hill The McGraw-Hill Companies, Inc., 20 1. 01 0

McGraw-Hill The McGraw-Hill Companies, Inc., 20 1. 01 0 1.1 McGraw-Hill The McGraw-Hill Companies, Inc., 2000 Objectives: To describe the evolution of programming languages from machine language to high-level languages. To understand how a program in a high-level

More information

VOC Documentation. Release 0.1. Russell Keith-Magee

VOC Documentation. Release 0.1. Russell Keith-Magee VOC Documentation Release 0.1 Russell Keith-Magee February 07, 2016 Contents 1 About VOC 3 1.1 The VOC Developer and User community................................ 3 1.2 Frequently Asked Questions.......................................

More information

IBrokers - Interactive Brokers and R

IBrokers - Interactive Brokers and R IBrokers - Interactive Brokers and R Jeffrey A. Ryan September 21, 2014 Contents 1 Introduction 1 2 The API 2 2.1 Data.................................. 2 2.2 Execution............................... 2

More information

MatrixSSL Porting Guide

MatrixSSL Porting Guide MatrixSSL Porting Guide Electronic versions are uncontrolled unless directly accessed from the QA Document Control system. Printed version are uncontrolled except when stamped with VALID COPY in red. External

More information

Programming the Android Platform. Logistics

Programming the Android Platform. Logistics Programming the Android Platform CMSC498G Logistics Professor Adam Porter 4125 AVW aporter@cs.umd.edu Course meets W 3:00 3:50 in CSI 3118 1 Goals Learn more about Mobile devices Mobile device programming

More information

Embedded Software Development

Embedded Software Development Linköpings Tekniska Högskola Institutionen för Datavetanskap (IDA), Software and Systems (SaS) TDDI11, Embedded Software 2010-04-22 Embedded Software Development Host and Target Machine Typical embedded

More information

SMTP-32 Library. Simple Mail Transfer Protocol Dynamic Link Library for Microsoft Windows. Version 5.2

SMTP-32 Library. Simple Mail Transfer Protocol Dynamic Link Library for Microsoft Windows. Version 5.2 SMTP-32 Library Simple Mail Transfer Protocol Dynamic Link Library for Microsoft Windows Version 5.2 Copyright 1994-2003 by Distinct Corporation All rights reserved Table of Contents 1 Overview... 5 1.1

More information

Wireless Mesh Networks under FreeBSD

Wireless Mesh Networks under FreeBSD Wireless Networks under FreeBSD Rui Paulo rpaulo@freebsd.org The FreeBSD Project AsiaBSDCon 2010 - Tokyo, Japan Abstract With the advent of low cost wireless chipsets, wireless mesh networks became much

More information

Chapter 13 Storage classes

Chapter 13 Storage classes Chapter 13 Storage classes 1. Storage classes 2. Storage Class auto 3. Storage Class extern 4. Storage Class static 5. Storage Class register 6. Global and Local Variables 7. Nested Blocks with the Same

More information

Android Architecture. Alexandra Harrison & Jake Saxton

Android Architecture. Alexandra Harrison & Jake Saxton Android Architecture Alexandra Harrison & Jake Saxton Overview History of Android Architecture Five Layers Linux Kernel Android Runtime Libraries Application Framework Applications Summary History 2003

More information

MatrixSSL Developer s Guide

MatrixSSL Developer s Guide MatrixSSL Developer s Guide This document discusses developing with MatrixSSL. It includes instructions on integrating MatrixSSL into an application and a description of the configurable options for modifying

More information

Introduction. Reading. Today MPI & OpenMP papers Tuesday Commutativity Analysis & HPF. CMSC 818Z - S99 (lect 5)

Introduction. Reading. Today MPI & OpenMP papers Tuesday Commutativity Analysis & HPF. CMSC 818Z - S99 (lect 5) Introduction Reading Today MPI & OpenMP papers Tuesday Commutativity Analysis & HPF 1 Programming Assignment Notes Assume that memory is limited don t replicate the board on all nodes Need to provide load

More information

ODROID Multithreading in Android

ODROID Multithreading in Android Multithreading in Android 1 Index Android Overview Android Stack Android Development Tools Main Building Blocks(Activity Life Cycle) Threading in Android Multithreading via AsyncTask Class Multithreading

More information

How To Understand How A Process Works In Unix (Shell) (Shell Shell) (Program) (Unix) (For A Non-Program) And (Shell).Orgode) (Powerpoint) (Permanent) (Processes

How To Understand How A Process Works In Unix (Shell) (Shell Shell) (Program) (Unix) (For A Non-Program) And (Shell).Orgode) (Powerpoint) (Permanent) (Processes Content Introduction and History File I/O The File System Shell Programming Standard Unix Files and Configuration Processes Programs are instruction sets stored on a permanent medium (e.g. harddisc). Processes

More information

5 CLASSES CHAPTER. 5.1 Object-Oriented and Procedural Programming. 5.2 Classes and Objects 5.3 Sample Application: A Clock Class

5 CLASSES CHAPTER. 5.1 Object-Oriented and Procedural Programming. 5.2 Classes and Objects 5.3 Sample Application: A Clock Class CHAPTER 5 CLASSES class head class struct identifier base spec union class name 5.1 Object-Oriented and Procedural Programming 5.2 Classes and Objects 5.3 Sample Application: A Clock Class 5.4 Sample Application:

More information

IBM SDK, Java Technology Edition Version 1. IBM JVM messages IBM

IBM SDK, Java Technology Edition Version 1. IBM JVM messages IBM IBM SDK, Java Technology Edition Version 1 IBM JVM messages IBM IBM SDK, Java Technology Edition Version 1 IBM JVM messages IBM Note Before you use this information and the product it supports, read the

More information

COS 217: Introduction to Programming Systems

COS 217: Introduction to Programming Systems COS 217: Introduction to Programming Systems 1 Goals for Todayʼs Class Course overview Introductions Course goals Resources Grading Policies Getting started with C C programming language overview 2 1 Introductions

More information

Implementation Aspects of OO-Languages

Implementation Aspects of OO-Languages 1 Implementation Aspects of OO-Languages Allocation of space for data members: The space for data members is laid out the same way it is done for structures in C or other languages. Specifically: The data

More information

Memory management. Announcements. Safe user input. Function pointers. Uses of function pointers. Function pointer example

Memory management. Announcements. Safe user input. Function pointers. Uses of function pointers. Function pointer example Announcements Memory management Assignment 2 posted, due Friday Do two of the three problems Assignment 1 graded see grades on CMS Lecture 7 CS 113 Spring 2008 2 Safe user input If you use scanf(), include

More information

TIA NEWHALL. A dissertation submitted in partial fulfillment. of the requirements for the degree of. Doctor of Philosophy. (Computer Sciences)

TIA NEWHALL. A dissertation submitted in partial fulfillment. of the requirements for the degree of. Doctor of Philosophy. (Computer Sciences) PERFORMANCE MEASUREMENT OF INTERPRETED, JUST-IN-TIME COMPILED, AND DYNAMICALLY COMPILED EXECUTIONS BY TIA NEWHALL A dissertation submitted in partial fulfillment of the requirements for the degree of Doctor

More information

Checking IE Settings, and Basic System Requirements for QuestionPoint

Checking IE Settings, and Basic System Requirements for QuestionPoint Checking IE Settings, and Basic System Requirements for QuestionPoint This document covers basic IE settings and system requirements necessary for QuestionPoint. These settings and requirements apply to

More information

Integer Set Library: Manual

Integer Set Library: Manual Integer Set Library: Manual Version: isl-0.15 Sven Verdoolaege June 11, 2015 Contents 1 User Manual 3 1.1 Introduction............................... 3 1.1.1 Backward Incompatible Changes...............

More information

SA8 T1 Meeting 3 JANUS Basics and Applications

SA8 T1 Meeting 3 JANUS Basics and Applications SA8 T1 Meeting 3 JANUS Basics and Applications Rui Ribeiro WebRTC Task Member IP Video Services Manager, FCT FCCN Stockolm, 27 Oct 2015 28/10/2015 Networks Services People www.geant.org Meetecho JANUS

More information

Virtual Servers. Virtual machines. Virtualization. Design of IBM s VM. Virtual machine systems can give everyone the OS (and hardware) that they want.

Virtual Servers. Virtual machines. Virtualization. Design of IBM s VM. Virtual machine systems can give everyone the OS (and hardware) that they want. Virtual machines Virtual machine systems can give everyone the OS (and hardware) that they want. IBM s VM provided an exact copy of the hardware to the user. Virtual Servers Virtual machines are very widespread.

More information

sqlpp11 - An SQL Library Worthy of Modern C++

sqlpp11 - An SQL Library Worthy of Modern C++ 2014-09-11 Code samples Prefer compile-time and link-time errors to runtime errors Scott Meyers, Effective C++ (2nd Edition) Code samples Let s look at some code String based In the talk, we looked at

More information

Server virtualization overview

Server virtualization overview overview Virtualization within the IT environment helps you make more efficient use of existing software and hardware resources. You can use popular virtualization software to create VMs (virtual machines)

More information

High-Level Language. Building a Modern Computer From First Principles. www.nand2tetris.org

High-Level Language. Building a Modern Computer From First Principles. www.nand2tetris.org High-Level Language Building a Modern Computer From First Principles www.nand2tetris.org Elements of Computing Systems, Nisan & Schocken, MIT Press, www.nand2tetris.org, Chapter 9: High-Level Language

More information

Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C

Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C 1 An essential part of any embedded system design Programming 2 Programming in Assembly or HLL Processor and memory-sensitive

More information

Xen and XenServer Storage Performance

Xen and XenServer Storage Performance Xen and XenServer Storage Performance Low Latency Virtualisation Challenges Dr Felipe Franciosi XenServer Engineering Performance Team e-mail: felipe.franciosi@citrix.com freenode: felipef #xen-api twitter:

More information

CS 241 Data Organization Coding Standards

CS 241 Data Organization Coding Standards CS 241 Data Organization Coding Standards Brooke Chenoweth University of New Mexico Spring 2016 CS-241 Coding Standards All projects and labs must follow the great and hallowed CS-241 coding standards.

More information

Android builders summit The Android media framework

Android builders summit The Android media framework Android builders summit The Android media framework Author: Bert Van Dam & Poornachandra Kallare Date: 22 April 2014 Usage models Use the framework: MediaPlayer android.media.mediaplayer Framework manages

More information

Java. How to install the Java Runtime Environment (JRE)

Java. How to install the Java Runtime Environment (JRE) Java How to install the Java Runtime Environment (JRE) Install Microsoft Virtual Machine (VM) via System Check Install Sun Java Runtime Environment (JRE) via System Check Loading Java Applet Failed How

More information

A JIT Compiler for Android s Dalvik VM. Ben Cheng, Bill Buzbee May 2010

A JIT Compiler for Android s Dalvik VM. Ben Cheng, Bill Buzbee May 2010 A JIT Compiler for Android s Dalvik VM Ben Cheng, Bill Buzbee May 2010 Overview View live session notes and ask questions on Google Wave: http://bit.ly/bizjnf Dalvik Environment Trace vs. Method Granularity

More information

1 Abstract Data Types Information Hiding

1 Abstract Data Types Information Hiding 1 1 Abstract Data Types Information Hiding 1.1 Data Types Data types are an integral part of every programming language. ANSI-C has int, double and char to name just a few. Programmers are rarely content

More information

GPU Profiling with AMD CodeXL

GPU Profiling with AMD CodeXL GPU Profiling with AMD CodeXL Software Profiling Course Hannes Würfel OUTLINE 1. Motivation 2. GPU Recap 3. OpenCL 4. CodeXL Overview 5. CodeXL Internals 6. CodeXL Profiling 7. CodeXL Debugging 8. Sources

More information

An Introduction to Android. Huang Xuguang Database Lab. Inha University 2009.11.2 Email: xuguanghuang@yahoo.cn

An Introduction to Android. Huang Xuguang Database Lab. Inha University 2009.11.2 Email: xuguanghuang@yahoo.cn An Introduction to Android Huang Xuguang Database Lab. Inha University 2009.11.2 Email: xuguanghuang@yahoo.cn Outline Background What is Android? Development for Android Background Internet users and Mobile

More information

To Java SE 8, and Beyond (Plan B)

To Java SE 8, and Beyond (Plan B) 11-12-13 To Java SE 8, and Beyond (Plan B) Francisco Morero Peyrona EMEA Java Community Leader 8 9...2012 2020? Priorities for the Java Platforms Grow Developer Base Grow Adoption

More information

l What is Android? l Getting Started l The Emulator l Hello World l ADB l Text to Speech l Other APIs (camera, bitmap, etc)

l What is Android? l Getting Started l The Emulator l Hello World l ADB l Text to Speech l Other APIs (camera, bitmap, etc) today l What is Android? l Getting Started l The Emulator l Hello World l ADB l Text to Speech l Other APIs (camera, bitmap, etc) l Other: Signing Apps, SVN l Discussion and Questions introduction to android

More information

Channel Access Client Programming. Andrew Johnson Computer Scientist, AES-SSG

Channel Access Client Programming. Andrew Johnson Computer Scientist, AES-SSG Channel Access Client Programming Andrew Johnson Computer Scientist, AES-SSG Channel Access The main programming interface for writing Channel Access clients is the library that comes with EPICS base Written

More information

BASIC COMPONENTS. There are 3 basic components in every Apache Cordova project:

BASIC COMPONENTS. There are 3 basic components in every Apache Cordova project: Apache Cordova is a open-source mobile development framework. It allows you to use standard web technologies such as HTML5, CSS3 and JavaScript for cross-platform development, avoiding each mobile platform

More information

How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint)

How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint) TN203 Porting a Program to Dynamic C Introduction Dynamic C has a number of improvements and differences compared to many other C compiler systems. This application note gives instructions and suggestions

More information

Android Development: a System Perspective. Javier Orensanz

Android Development: a System Perspective. Javier Orensanz Android Development: a System Perspective Javier Orensanz 1 ARM - Linux and Communities Linux kernel GNU Tools 2 Linaro Partner Initiative Mission: Make open source development easier by delivering a common

More information

Extending Desktop Applications to the Web

Extending Desktop Applications to the Web Extending Desktop Applications to the Web Arno Puder San Francisco State University Computer Science Department 1600 Holloway Avenue San Francisco, CA 94132 arno@sfsu.edu Abstract. Web applications have

More information

Software design for self-sustaining embedded systems

Software design for self-sustaining embedded systems Software design for self-sustaining embedded systems Designing and implementing software for embedded systems with limited power resources is a challenging task. This paper focuses on software development

More information

3.5. cmsg Developer s Guide. Data Acquisition Group JEFFERSON LAB. Version

3.5. cmsg Developer s Guide. Data Acquisition Group JEFFERSON LAB. Version Version 3.5 JEFFERSON LAB Data Acquisition Group cmsg Developer s Guide J E F F E R S O N L A B D A T A A C Q U I S I T I O N G R O U P cmsg Developer s Guide Elliott Wolin wolin@jlab.org Carl Timmer timmer@jlab.org

More information

Deep Inside Android. OpenExpo 2008 - Zurich September 25 th, 2008. Gilles Printemps - Senior Architect. Copyright 2007 Esmertec AG.

Deep Inside Android. OpenExpo 2008 - Zurich September 25 th, 2008. Gilles Printemps - Senior Architect. Copyright 2007 Esmertec AG. Deep Inside Android OpenExpo 2008 - Zurich September 25 th, 2008 Copyright 2007 Esmertec AG Jan 2007 Gilles Printemps - Senior Architect Agenda What is Android? The Android platform Anatomy of an Android

More information

The GenomeTools Developer s Guide

The GenomeTools Developer s Guide The GenomeTools Developer s Guide Sascha Steinbiss, Gordon Gremme and Stefan Kurtz February 4, 2013 Contents 1 Introduction 1 2 Object-oriented design 2 3 Directory structure 11 4 Public APIs 13 5 Coding

More information

EMSCRIPTEN - COMPILING LLVM BITCODE TO JAVASCRIPT (?!)

EMSCRIPTEN - COMPILING LLVM BITCODE TO JAVASCRIPT (?!) EMSCRIPTEN - COMPILING LLVM BITCODE TO JAVASCRIPT (?!) ALON ZAKAI (MOZILLA) @kripken JavaScript..? At the LLVM developer's conference..? Everything compiles into LLVM bitcode The web is everywhere, and

More information

C++ Class Library Data Management for Scientific Visualization

C++ Class Library Data Management for Scientific Visualization I. Introduction C++ Class Library Data Management for Scientific Visualization Al Globus, Computer Sciences Corporation 1 globus@nas.nasa.gov Abstract Scientific visualization strives to convert large

More information

AVRO - SERIALIZATION

AVRO - SERIALIZATION http://www.tutorialspoint.com/avro/avro_serialization.htm AVRO - SERIALIZATION Copyright tutorialspoint.com What is Serialization? Serialization is the process of translating data structures or objects

More information

Caml Virtual Machine File & data formats Document version: 1.4 http://cadmium.x9c.fr

Caml Virtual Machine File & data formats Document version: 1.4 http://cadmium.x9c.fr Caml Virtual Machine File & data formats Document version: 1.4 http://cadmium.x9c.fr Copyright c 2007-2010 Xavier Clerc cadmium@x9c.fr Released under the LGPL version 3 February 6, 2010 Abstract: This

More information