Binary compatibility for library developers. Thiago Macieira, Qt Core Maintainer LinuxCon North America, New Orleans, Sept. 2013
|
|
|
- Barnard Lucas
- 9 years ago
- Views:
Transcription
1 Binary compatibility for library developers Thiago Macieira, Qt Core Maintainer LinuxCon North America, New Orleans, Sept. 2013
2 Who am I? Open Source developer for 15 years C++ developer for 13 years Software Architect at Intel s Open Source Technology Center (OTC) Maintainer of two modules in the Qt Project QtCore and QtDBus MBA and double degree in Engineering Previously, led the Qt Open Governance project 2
3 Definitions Binary compatibility Source compatibility Behaviour compatibility Bug compatibility 6
4 Binary compatibility Two libraries are binary compatible with each other if: Programs compiled against one will load and run correctly* against the other * by some definition of correct 7
5 Source compatibility Two libraries are source compatible with each other if: Source code written against one will compile without changes against the other 8
6 Behaviour and bug compatibility Two libraries are behaviour-compatible with each other if: The program will exhibit the same behaviour with either library Two libraries are bugcompatible with each other if: Expanded version of behaviour compatibility to include buggy behaviour 9
7 Forwards and backwards Depends on the point of view Backwards compatibility: newer version retains compatibility with older version You can upgrade the library Forwards compatibility: older version foreshadows compatibility with newer version You can downgrade the library 10
8 This presentation focuses on Backwards binary compatibility This depends on the ABI Will focus on the System V ELF ABI for Linux and IA-64 C++ ABI 11
9 Why you should care Library used by libraries They expose your API in their API Their users might want to use a newer version of your library Library used by anything Upgrading parts of the system Large, complex project 12
10 Project with 2 modules: initial state Mod 1 Mod 2 Data exchange Your lib Your lib 14
11 Lib is upgraded in one module Mod 1 (recompiled) Data exchange Mod 2 Your lib v2 Your lib Does this still load? 15
12 Co-existing libraries Mod 1 Mod 2 Data exchange Your lib libv2 Your lib Does it still work? 16
13 If you re developing an application... This does not apply to you Except if the application has plugins Or if it has independent modules The application has libraries 17
14 The details
15 Binary compatibility requires... No public¹ symbol be removed All public¹ functions retain retain their properties Which arguments are passed in registers, which are passed on the stack, implicit arguments, argument count, etc. All public¹ structures retain their layout and properties For both C and C++ aggregates: sizeof, alignof, order & type of publiclyaccessible members, etc. For C++ aggregates: dsize, nvsize, PODness, etc. 19 1) Symbols intentionally made public as part of the API plus private symbols used in inline functions
16 Example: simple C library (C++ comes later) /* lib-header.h. */ struct Data { int i; int j; }; extern struct Data global_data; void function(struct Data *data); /* lib-source.c */ $ gcc -c /tmp/lib-source.c $ nm lib-source.o T function D global_data Could be B too struct Data global_data = { 1 }; void function(struct Data *data) { } 20
17 No public symbol is removed Easy to do Do not remove any variables or functions that exist Do not change any variable or function in a way that would cause its external (mangled) name to change In our example, we cannot: Remove either the function function or the variable global_data 21
18 All functions retain their properties The C++ language helps you This requirement is mostly fulfilled by the previous and next requirements If the data types retain their properties And if the mangled name of a function is retained The function retains its properties In C, it s possible to change the arguments without changing the external symbol In our example: The function function must not read more than 1 argument of integral type 22
19 All data types retain their properties Can be automated with a C or C++ parser and the compiler Best avoided: Use opaque types / d-pointers / private implementation Examples: Change alignment user s structure could add or remove padding Change non-padded size the compiler is allowed to use tail-padding (C++) Make non-pod user s structure becomes non-pod too In our example, we cannot: Reorder the members in the struct Remove the members Place the members in a union with a long long (changes the alignment) 23
20 And then there s C++ Life gets more complicated External names for all¹ functions are mangled External names for all¹ variables in namespaces are mangled In some other ABIs, even those in the base namespace Non-POD (Plain Old Data) aggregates have more rules But we gain too: Functions can be overloaded Mangled names help in ensuring binary compatibility for functions 24 1) all except those declared with extern C
21 C++ mangled names IA-64 C++ ABI Prefixed by _Z Case sensitive Doesn t mangle free variables Mangles only what is required for overloads that can co-exist Microsoft Visual Studio Prefixed by question mark (?) Case insensitive Mangles free variables Mangles everything, including: Return type Struct vs class Public, protected, private Near, far, 64-bit pointers cv-qualifiers 25
22 Example: our library in C++ /* lib-header.h. */ struct Data { int i; int j; }; extern struct Data global_data; void function(struct Data *data); /* lib-source.cpp */ struct Data global_data = { 1 }; void function(struct Data *data) { } $ g++ -c /tmp/lib-source.cpp $ nm lib-source.o T _Z8functionP4Data D global_data Note the presence of Data 26
23 What works
24 Guidelines Don t expose what you don t need Be conservative in what you change Follow the Binary Compatibility with C++ [1] guidebook Use automated test tools 35 [1]
25 Minimal exported API Design a minimal API If you re unsure about something, don t include it (yet) Limit exports by using ELF symbol visibility: -fvisibility=hidden -fvisibility-inlines-hidden attribute ((visibility( default ))) Use opaque or simple types Private implementation, d-pointers Use an API based on functions Avoid exported variables Avoid returning pointers or C++ references to internal variables 36
26 Why functions and private implementations? In C Use opaque types typedef struct _GDir GDir; Forbidden! Can t be constructed by the user always passed by pointer Free to be changed at will In C++ Use private implementation Your public types won t change much or at all Lowers the risk of changing the type s properties You can freely change the private implementation Adding new functions is easier than modifying the public type C p1: All identifiers that begin with an underscore and either an uppercase letter or another underscore are always reserved for any use 37
27 Changing non-virtual functions¹ (C and C++) You can Add a new function De-inline an existing function If it s acceptable that the old copy be run Remove a private function If it has never been called in an inline function, ever (C++) Change default parameters You cannot Unexport or remove public functions Inline an existing function (C) Change the parameter so it would be passed differently (C++) Change its signature: Change or add parameters Change cv-qualifier Change access rights Change return type 38 1) includes all C functions as well as C++ functions with extern C
28 Changing virtual functions (C++ only) You can Override an existing virtual Only from primary, non-virtual base Add a new virtual to a leaf (final) class You cannot Add or remove a virtual to a non-final class Change the order of the declarations Add a virtual to a class that had none 39
29 Anchoring the virtual table (C++ only) Make sure there s one non-inline virtual Preferably the destructor Avoid virtuals in template classes 40
30 Changing non-static members in aggregates (C and C++) You can Rename private members¹ Repurpose private members² Add new members to the end, provided the struct is: POD (C++98 and all C structs) Standard-layout (C++11) and: (C++) The constructor is private; OR The struct has a member containing its size You cannot Reorder public members in any way Remove members You should not (C++) Change member access privileges (C++) Add a reference or const or non-pod member to a struct without one 41 1) provided the class has no friends; 2) provided old inline functions still work
31 Testing compliance Run automated tests frequently Run full tests at least once before the release On Windows: use the exports file On Unix: use nm, otool (Mac), readelf (ELF systems) GCC: use -fdump-class-hierarchy Everywhere: use the Linux Foundation s ABI Compliance Checker[1] Confirmed to run on Mac, Windows and FreeBSD 42 [1]
32 Manual checking before release Do a header diff git diff --diff-filter=m oldtag -- \*.h Manually exclude headers that aren t installed Or obtain the list of installed headers from your buildsystem 43
33 Be careful with false positives You probably want a white and black list White-list your library s own API Black-list leaked symbols from other libraries Inlines and unanchored virtual tables 44
34 Further: experimental API Don t do it like ICU Place it in a separate library In fact, place it in a separate source release Keeps Linux distributions happy 45
35 Further: breaking binary compatibility Announce in well in advance Keep previous version maintained for longer than usual Try to keep source compatibility Change your library names (ELF soname) 46
36 Resources Binary compatibility guide in KDE Techbase: Examples: Calling convention article (includes MSVC, Sun CC): IA-64 / Cross-platform C++ ABI: How to Write Shared Libraries, by Ulrich Drepper libabc 47
37 Thiago Macieira
C++ INTERVIEW QUESTIONS
C++ INTERVIEW QUESTIONS http://www.tutorialspoint.com/cplusplus/cpp_interview_questions.htm Copyright tutorialspoint.com Dear readers, these C++ Interview Questions have been designed specially to get
How to use PDFlib products with PHP
How to use PDFlib products with PHP Last change: July 13, 2011 Latest PDFlib version covered in this document: 8.0.3 Latest version of this document available at: www.pdflib.com/developer/technical-documentation
Open Governance for Tizen 3.0
Open Governance for Tizen 3.0 Thiago Macieira, Intel Guy Martin, Samsung Tizen Developer Summit Korea 2013 Who are we? Thiago Macieira Open Source developer for 15 years Software Architect at Intel s Open
KITES TECHNOLOGY COURSE MODULE (C, C++, DS)
KITES TECHNOLOGY 360 Degree Solution www.kitestechnology.com/academy.php [email protected] [email protected] Contact: - 8961334776 9433759247 9830639522.NET JAVA WEB DESIGN PHP SQL, PL/SQL
Course Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies)
Course Name: ADVANCE COURSE IN SOFTWARE DEVELOPMENT (Specialization:.Net Technologies) Duration of Course: 6 Months Fees: Rs. 25,000/- (including Service Tax) Eligibility: B.E./B.Tech., M.Sc.(IT/ computer
C++ Programming Language
C++ Programming Language Lecturer: Yuri Nefedov 7th and 8th semesters Lectures: 34 hours (7th semester); 32 hours (8th semester). Seminars: 34 hours (7th semester); 32 hours (8th semester). Course abstract
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
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
sys socketcall: Network systems calls on Linux
sys socketcall: Network systems calls on Linux Daniel Noé April 9, 2008 The method used by Linux for system calls is explored in detail in Understanding the Linux Kernel. However, the book does not adequately
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
Application Note C++ Debugging
Application Note C++ Debugging TRACE32 Online Help TRACE32 Directory TRACE32 Index TRACE32 Documents... High-Level Language Debugging... Application Note C++ Debugging... 1 Sample Code used by This Application
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
PART-A Questions. 2. How does an enumerated statement differ from a typedef statement?
1. Distinguish & and && operators. PART-A Questions 2. How does an enumerated statement differ from a typedef statement? 3. What are the various members of a class? 4. Who can access the protected members
LLVMLinux: Embracing the Dragon
LLVMLinux: Embracing the Dragon Presented by: Behan Webster ( lead) Presentation Date: 2014.08.22 Clang/LLVM LLVM is a Toolchain Toolkit (libraries from which compilers and related technologies can be
CORBA Programming with TAOX11. The C++11 CORBA Implementation
CORBA Programming with TAOX11 The C++11 CORBA Implementation TAOX11: the CORBA Implementation by Remedy IT TAOX11 simplifies development of CORBA based applications IDL to C++11 language mapping is easy
Java Interview Questions and Answers
1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java
4D Plugin SDK v11. Another minor change, real values on 10 bytes is no longer supported.
4D Plugin SDK v11 4D Plugin API 4D Plugin API v11 is a major upgrade of 4D Plugin API. The two major modifications are that it is now fully Unicode compliant, and that it gives support to the new 4D pictures.
Applying Clang Static Analyzer to Linux Kernel
Applying Clang Static Analyzer to Linux Kernel 2012/6/7 FUJITSU COMPUTER TECHNOLOGIES LIMITED Hiroo MATSUMOTO 管 理 番 号 1154ka1 Copyright 2012 FUJITSU COMPUTER TECHNOLOGIES LIMITED Abstract Now there are
Coding conventions and C++-style
Chapter 1 Coding conventions and C++-style This document provides an overview of the general coding conventions that are used throughout oomph-lib. Knowledge of these conventions will greatly facilitate
Sources: On the Web: Slides will be available on:
C programming Introduction The basics of algorithms Structure of a C code, compilation step Constant, variable type, variable scope Expression and operators: assignment, arithmetic operators, comparison,
OpenCL Static C++ Kernel Language Extension
OpenCL Static C++ Kernel Language Extension Document Revision: 04 Advanced Micro Devices Authors: Ofer Rosenberg, Benedict R. Gaster, Bixia Zheng, Irina Lipov December 15, 2011 Contents 1 Overview... 3
How To Write Portable Programs In C
Writing Portable Programs COS 217 1 Goals of Today s Class Writing portable programs in C Sources of heterogeneity Data types, evaluation order, byte order, char set, Reading period and final exam Important
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
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
An Overview of Java. overview-1
An Overview of Java overview-1 Contents What is Java Major Java features Java virtual machine Java programming language Java class libraries (API) GUI Support in Java Networking and Threads in Java overview-2
The C Programming Language course syllabus associate level
TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming
CIS 190: C/C++ Programming. Polymorphism
CIS 190: C/C++ Programming Polymorphism Outline Review of Inheritance Polymorphism Car Example Virtual Functions Virtual Function Types Virtual Table Pointers Virtual Constructors/Destructors Review of
MSP430 C/C++ CODE GENERATION TOOLS Compiler Version 3.2.X Parser Error/Warning/Remark List
MSP430 C/C++ CODE GENERATION TOOLS Compiler Version 3.2.X Parser Error/Warning/Remark List This is a list of the error/warning messages generated by the Texas Instruments C/C++ parser (which we license
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.
Image Acquisition Toolbox Adaptor Kit User's Guide
Image Acquisition Toolbox Adaptor Kit User's Guide R2015b How to Contact MathWorks Latest news: www.mathworks.com Sales and services: www.mathworks.com/sales_and_services User community: www.mathworks.com/matlabcentral
Storage Classes CS 110B - Rule Storage Classes Page 18-1 \handouts\storclas
CS 110B - Rule Storage Classes Page 18-1 Attributes are distinctive features of a variable. Data type, int or double for example, is an attribute. Storage class is another attribute. There are four storage
C++ Overloading, Constructors, Assignment operator
C++ Overloading, Constructors, Assignment operator 1 Overloading Before looking at the initialization of objects in C++ with constructors, we need to understand what function overloading is In C, two functions
JetBrains ReSharper 2.0 Overview Introduction ReSharper is undoubtedly the most intelligent add-in to Visual Studio.NET 2003 and 2005. It greatly increases the productivity of C# and ASP.NET developers,
How to create PDF maps, pdf layer maps and pdf maps with attributes using ArcGIS. Lynne W Fielding, GISP Town of Westwood
How to create PDF maps, pdf layer maps and pdf maps with attributes using ArcGIS Lynne W Fielding, GISP Town of Westwood PDF maps are a very handy way to share your information with the public as well
Release Notes. Asset Control and Contract Management Solution 6.1. March 30, 2005
Release Notes Asset Control and Contract Management Solution 6.1 March 30, 2005 Contents SECTION 1 OVERVIEW...4 1.1 Document Purpose... 4 1.2 Background... 4 1.3 Documentation... 4 SECTION 2 UPGRADING
Motorola 8- and 16-bit Embedded Application Binary Interface (M8/16EABI)
Motorola 8- and 16-bit Embedded Application Binary Interface (M8/16EABI) SYSTEM V APPLICATION BINARY INTERFACE Motorola M68HC05, M68HC08, M68HC11, M68HC12, and M68HC16 Processors Supplement Version 2.0
Installing (1.8.7) 9/2/2009. 1 Installing jgrasp
1 Installing jgrasp Among all of the jgrasp Tutorials, this one is expected to be the least read. Most users will download the jgrasp self-install file for their system, doubleclick the file, follow the
An Incomplete C++ Primer. University of Wyoming MA 5310
An Incomplete C++ Primer University of Wyoming MA 5310 Professor Craig C. Douglas http://www.mgnet.org/~douglas/classes/na-sc/notes/c++primer.pdf C++ is a legacy programming language, as is other languages
Object Oriented Software Design II
Object Oriented Software Design II Introduction to C++ Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa February 20, 2012 G. Lipari (Scuola Superiore Sant Anna) C++ Intro February
Declarative API for Defining Visualizations in Envision
Declarative API for Defining Visualizations in Envision Bachelor s Thesis Report Andrea Helfenstein Supervised by Dimitar Asenov, Prof. Peter Müller May 5, 2013 Contents 1 Introduction 1 1.1 Motivation..........................................
Qt Signals and Slots. Olivier Goffart. October 2013
Qt Signals and Slots Olivier Goffart October 2013 About Me About Me QStyleSheetStyle Itemviews Animation Framework QtScript (porting to JSC and V8) QObject, moc QML Debugger Modularisation... About Me
Common Errors in C/C++ Code and Static Analysis
Common Errors in C/C++ Code and Static Analysis Red Hat Ondřej Vašík and Kamil Dudka 2011-02-17 Abstract Overview of common programming mistakes in the C/C++ code, and comparison of a few available static
6.S096 Lecture 1 Introduction to C
6.S096 Lecture 1 Introduction to C Welcome to the Memory Jungle Andre Kessler Andre Kessler 6.S096 Lecture 1 Introduction to C 1 / 30 Outline 1 Motivation 2 Class Logistics 3 Memory Model 4 Compiling 5
TNM093 Practical Data Visualization and Virtual Reality Laboratory Platform
October 6, 2015 1 Introduction The laboratory exercises in this course are to be conducted in an environment that might not be familiar to many of you. It is based on open source software. We use an open
UML for C# Modeling Basics
UML for C# C# is a modern object-oriented language for application development. In addition to object-oriented constructs, C# supports component-oriented programming with properties, methods and events.
Talend Component: tjasperreportexec
Talend Component: tjasperreportexec Purpose This component creates (compile + fill + export) reports based on Jasper Report designs (jrxml files). Making reports in the ETL system provides multiple advantages:
1 Posix API vs Windows API
1 Posix API vs Windows API 1.1 File I/O Using the Posix API, to open a file, you use open(filename, flags, more optional flags). If the O CREAT flag is passed, the file will be created if it doesnt exist.
Applied Informatics C++ Coding Style Guide
C++ Coding Style Guide Rules and Recommendations Version 1.4 Purpose of This Document This document describes the C++ coding style employed by Applied Informatics. The document is targeted at developers
Porting Lustre to Operating Systems other than Linux. Ken Hornstein US Naval Research Laboratory April 16, 2010
Porting Lustre to Operating Systems other than Linux Ken Hornstein US Naval Research Laboratory April 16, 2010 Motivation We do a lot of data visualization on Lustre data, and would like to do that on
www.sahajsolns.com Chapter 4 OOPS WITH C++ Sahaj Computer Solutions
Chapter 4 OOPS WITH C++ Sahaj Computer Solutions 1 Session Objectives Classes and Objects Class Declaration Class Members Data Constructors Destructors Member Functions Class Member Visibility Private,
Bypassing Memory Protections: The Future of Exploitation
Bypassing Memory Protections: The Future of Exploitation Alexander Sotirov [email protected] About me Exploit development since 1999 Research into reliable exploitation techniques: Heap Feng Shui in JavaScript
Get an Easy Performance Boost Even with Unthreaded Apps. with Intel Parallel Studio XE for Windows*
Get an Easy Performance Boost Even with Unthreaded Apps for Windows* Can recompiling just one file make a difference? Yes, in many cases it can! Often, you can achieve a major performance boost by recompiling
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,
Surface and Volumetric Data Rendering and Visualisation
Surface and Volumetric Data Rendering and Visualisation THE Qt TOOLKIT Department of Information Engineering Faculty of Engineering University of Brescia Via Branze, 38 25231 Brescia - ITALY 1 What is
Supported platforms & compilers Required software Where to download the packages Geant4 toolkit installation (release 9.6)
Supported platforms & compilers Required software Where to download the packages Geant4 toolkit installation (release 9.6) Configuring the environment manually Using CMake CLHEP full version installation
Building Applications Using Micro Focus COBOL
Building Applications Using Micro Focus COBOL Abstract If you look through the Micro Focus COBOL documentation, you will see many different executable file types referenced: int, gnt, exe, dll and others.
Variable Base Interface
Chapter 6 Variable Base Interface 6.1 Introduction Finite element codes has been changed a lot during the evolution of the Finite Element Method, In its early times, finite element applications were developed
Software Configuration Management
Steven J Zeil March 17, 2013 Contents 1 Problems 2 2 Common Practices 6 1 1 Problems Software Configuration Management Over time, a software system can exist in many versions: revisions created as developers
Developing In Eclipse, with ADT
Developing In Eclipse, with ADT Android Developers file://v:\android-sdk-windows\docs\guide\developing\eclipse-adt.html Page 1 of 12 Developing In Eclipse, with ADT The Android Development Tools (ADT)
Next, the driver runs the C compiler (cc1), which translates main.i into an ASCII assembly language file main.s.
Chapter 7 Linking Linking is the process of collecting and combining various pieces of code and data into a single file that can be loaded (copied) into memory and executed. Linking can be performed at
Moving from CS 61A Scheme to CS 61B Java
Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you
Lazy OpenCV installation and use with Visual Studio
Lazy OpenCV installation and use with Visual Studio Overview This tutorial will walk you through: How to install OpenCV on Windows, both: The pre-built version (useful if you won t be modifying the OpenCV
Bachelors of Computer Application Programming Principle & Algorithm (BCA-S102T)
Unit- I Introduction to c Language: C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating
Oracle Taleo Business Edition Cloud Service. What s New in Release 15B1
Oracle Taleo Business Edition Cloud Service What s New in Release 15B1 July 2015 TABLE OF CONTENTS REVISION HISTORY... 3 OVERVIEW... 4 RELEASE FEATURE SUMMARY... 4 CAREERS WEBSITES... 5 Mobile Enabled
Advanced Encryption Standard (AES) User's Guide
Advanced Encryption Standard (AES) User's Guide Version 1.00 BETA For use with AES versions 1.6 and above Date: 11-Feb-2015 11:23 All rights reserved. This document and the associated software are the
Porting CodeWarrior Projects to Xcode. (Legacy)
Porting CodeWarrior Projects to Xcode (Legacy) Contents Introduction to Porting CodeWarrior Projects to Xcode 7 Prerequisites 7 Further Reading 8 Organization of This Document 8 Feedback and Mail List
Constructor, Destructor, Accessibility and Virtual Functions
Constructor, Destructor, Accessibility and Virtual Functions 182.132 VL Objektorientierte Programmierung Raimund Kirner Mitwirkung an Folienerstellung: Astrit Ademaj Agenda Constructor Destructors this
Distributed Version Control
Distributed Version Control Faisal Tameesh April 3 rd, 2015 Executive Summary Version control is a cornerstone of modern software development. As opposed to the centralized, client-server architecture
Graphical Environment Tool for Development versus Non Graphical Development Tool
Section 4 Computing, Communications Engineering and Signal Processing & Interactive Intelligent Systems Graphical Environment Tool for Development versus Non Graphical Development Tool Abstract S.Daniel
Course MS10975A Introduction to Programming. Length: 5 Days
3 Riverchase Office Plaza Hoover, Alabama 35244 Phone: 205.989.4944 Fax: 855.317.2187 E-Mail: [email protected] Web: www.discoveritt.com Course MS10975A Introduction to Programming Length: 5 Days
Excel Formatting: Best Practices in Financial Models
Excel Formatting: Best Practices in Financial Models Properly formatting your Excel models is important because it makes it easier for others to read and understand your analysis and for you to read and
Organization of Programming Languages CS320/520N. Lecture 05. Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.
Organization of Programming Languages CS320/520N Razvan C. Bunescu School of Electrical Engineering and Computer Science [email protected] Names, Bindings, and Scopes A name is a symbolic identifier used
Android NDK Native Development Kit
Contents 1. What you can do with NDK 2. When to use native code 3. Stable APIs to use / available libraries 4. Build native applications with NDK 5. NDK contents and structure 6. NDK cross-compiler suite
What s New in OMNeT++
What s New in OMNeT++ András Varga Opensim Ltd [email protected] 2 nd OMNeT++ Community Summit September 4-5, 2015 IBM Research Labs, Zurich 1 PART 1 API CHANGES 2 New Logging Mechanism More featureful
How do Users and Processes interact with the Operating System? Services for Processes. OS Structure with Services. Services for the OS Itself
How do Users and Processes interact with the Operating System? Users interact indirectly through a collection of system programs that make up the operating system interface. The interface could be: A GUI,
SECTION 5: Finalizing Your Workbook
SECTION 5: Finalizing Your Workbook In this section you will learn how to: Protect a workbook Protect a sheet Protect Excel files Unlock cells Use the document inspector Use the compatibility checker Mark
MADRAS: Multi-Architecture Binary Rewriting Tool Technical report. Cédric Valensi University of Versailles Saint-Quentin en Yvelines
MADRAS: Multi-Architecture Binary Rewriting Tool Technical report Cédric Valensi University of Versailles Saint-Quentin en Yvelines September 2, 2013 Chapter 1 Introduction In the domain of High Performance
This document presents the new features available in ngklast release 4.4 and KServer 4.2.
This document presents the new features available in ngklast release 4.4 and KServer 4.2. 1) KLAST search engine optimization ngklast comes with an updated release of the KLAST sequence comparison tool.
Outside In Image Export Technology SDK Quick Start Guide
Reference: 2009/02/06-8.3 Outside In Image Export Technology SDK Quick Start Guide This document provides an overview of the Outside In Image Export Software Developer s Kit (SDK). It includes download
Migration of Process Credentials
C H A P T E R - 5 Migration of Process Credentials 5.1 Introduction 5.2 The Process Identifier 5.3 The Mechanism 5.4 Concluding Remarks 100 CHAPTER 5 Migration of Process Credentials 5.1 Introduction Every
Xcode Project Management Guide. (Legacy)
Xcode Project Management Guide (Legacy) Contents Introduction 10 Organization of This Document 10 See Also 11 Part I: Project Organization 12 Overview of an Xcode Project 13 Components of an Xcode Project
El Dorado Union High School District Educational Services
El Dorado Union High School District Course of Study Information Page Course Title: ACE Computer Programming II (#495) Rationale: A continuum of courses, including advanced classes in technology is needed.
FileMaker Pro and Microsoft Office Integration
FileMaker Pro and Microsoft Office Integration page Table of Contents Executive Summary...3 Introduction...3 Top Reasons to Read This Guide...3 Before You Get Started...4 Downloading the FileMaker Trial
Illustration 1: Diagram of program function and data flow
The contract called for creation of a random access database of plumbing shops within the near perimeter of FIU Engineering school. The database features a rating number from 1-10 to offer a guideline
Authoring for System Center 2012 Operations Manager
Authoring for System Center 2012 Operations Manager Microsoft Corporation Published: November 1, 2013 Authors Byron Ricks Applies To System Center 2012 Operations Manager System Center 2012 Service Pack
Frequently Asked Questions Sage Pastel Intelligence Reporting
Frequently Asked Questions Sage Pastel Intelligence Reporting The software described in this document is protected by copyright, and may not be copied on any medium except as specifically authorized in
Introduction to Data Structures
Introduction to Data Structures Albert Gural October 28, 2011 1 Introduction When trying to convert from an algorithm to the actual code, one important aspect to consider is how to store and manipulate
13 Classes & Objects with Constructors/Destructors
13 Classes & Objects with Constructors/Destructors 13.1 Introduction In object oriented programming, the emphasis is on data rather than function. Class is a way that binds the data & function together.
Part I. The Picture class
CS 161 LAB 5 This lab will have two parts. In the first part, we will create a class to automate the drawing of the robot from the second lab. For the second part, we will begin a ClunkyCalculator class
CMSC 427 Computer Graphics Programming Assignment 1: Introduction to OpenGL and C++ Due Date: 11:59 PM, Sept. 15, 2015
CMSC 427 Computer Graphics Programming Assignment 1: Introduction to OpenGL and C++ Due Date: 11:59 PM, Sept. 15, 2015 Project Submission: 1) Delete all intermediate files (run the command make clean)
C and C++: Case Studies in Compatibility
C and C++: Case Studies in Compatibility Bjarne Stroustrup AT&T Labs Florham Park, NJ, USA ABSTRACT This article gives examples of how one might go about increasing the degree of compatibility of C and
MAXA-COOKIE-MANAGER - USER MANUAL - SW-Release V 5.0 / Document Rev. 1.1
MAXA-COOKIE-MANAGER - USER MANUAL - SW-Release V 5.0 / Document Rev. 1.1 Quick Start Once installed MAXA Cookie Manager goes to work immediately to gather information about the cookies on your system and
How To Upgrade To Sugarcrm 7.X
Why, When, and How to Upgrade to SugarCRM Version 7 Why Upgrade to SugarCRM Version 7? New Screen Layouts See more information on a single screen with the new ListView and RecordView layouts in SugarCRM
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
3F6 - Software Engineering and Design. Handout 10 Distributed Systems I With Markup. Steve Young
3F6 - Software Engineering and Design Handout 10 Distributed Systems I With Markup Steve Young Contents 1. Distributed systems 2. Client-server architecture 3. CORBA 4. Interface Definition Language (IDL)
