Migration to ISO C++ an overview Gabriele Cosmo CERN - IT/ASD.

Slides:



Advertisements
Similar presentations
Chapter 11 Separate Compilation and Namespaces. Copyright © 2006 Pearson Addison-Wesley. All rights reserved Learning Objectives Separate Compilation.
Advertisements

Copyright © 2002 Pearson Education, Inc. Slide 1.
The following 10 questions test your knowledge of desired configuration management in Configuration Manager Configuration Manager Desired Configuration.
Configuration Management
Introduction to C++ Programming. Brief Facts About C++ Evolved from C Designed and implemented by Bjarne Stroustrup at the Bell Labs in the early 1980s.
Chapter 12 Separate Compilation and Namespaces. Abstract Data Type (ADT) ADT: A data type consisting of data and their behavior. The abstraction is that.
Geant4 ESTEC Workshop K.Amako 1 Geant4 User’s Documents Geant4 ESTEC Workshop 23 September, 1999 Katsuya Amako (KEK)
Spacecraft Environment & Protection Group GEANT4 Workshop, ESTEC, 20-24, Sep A CAD/Geant4 Front-end Interface Fan Lei Space Department, Defence Evaluation.
Chapter 11 Separate Compilation and Namespaces Copyright © 2008 Pearson Addison-Wesley. All rights reserved.
Copyright © 2008 Pearson Addison-Wesley. All rights reserved. Chapter 12A Separate Compilation and Namespaces For classes this time.
Copyright © 2008 Pearson Addison-Wesley. All rights reserved. Chapter 12 Separate Compilation Namespaces Simple Make Files (Ignore all class references.
14 May 2007 Upgrading Your Geant4 Release J. Perl 1 Upgrading Your Geant4 Release Joseph Perl, SLAC.
14 January 2011 Upgrading Your Geant4 Release J. Perl 1 Upgrading Your Geant4 Release Joseph Perl, SLAC.
 2007 Pearson Education, Inc. All rights reserved C++ as a Better C; Introducing Object Technology.
Are you Confident that data in your non-production systems is secured?
Overview of Mini-Edit and other Tools Access DB Oracle DB You Need to Send Entries From Your Std To the Registry You Need to Get Back Updated Entries From.
Using Styles and Style Sheets for Design
By – Tanvir Alam.  This tutorial offers several things.  You’ll see some neat features of the language.  You’ll learn the right things to google. 
Separate Compilation. A key concept in programming  Two kinds of languages, compilation (C, Pascal, …) and interpretation (Lisp, …, Matlab, Phython,
Page 1 Trilinos Release Improvement Issues Roscoe A. Bartlett Department of Optimization & Uncertainty Estimation Trilinos.
Version control Using Git Version control, using Git1.
Object-Oriented Analysis & Design Subversion. Contents  Configuration management  The repository  Versioning  Tags  Branches  Subversion 2.
L. Mancera IT/API LCG SPI project: Code documentation1 Code Documentation Luis Mancera LCG Software Process & Infrastructure (CERN, 10/23/02)
Chapter 18 – Miscellaneous Topics. Multiple File Programs u Makes possible to accommodate many programmers working on same project u More efficient to.
Study for Migration from CVS to SubVersion (SVN) Gunter Folger CERN/PH/SFT.
Programming Principles Chapter 1. Objectives Discuss the program design process. Introduce the Game of Life. Discuss object oriented design. – Information.
PI Data Archive Server COM Points Richard Beeson.
C++ Functions. Objectives 1. Be able to implement C++ functions 2. Be able to share data among functions 2.
CS 213 Fall 1998 Namespaces Inline functions Preprocessing Compiling Name mangling Linking.
Fall 2004CSI University of Ottawa Introduction to PHP Basic principles and syntax.
C++ Programming Part 2 Michael Griffiths Corporate Information and Computing Services The University of Sheffield
How to Convert to a Managed Package Winter `07 Ralph Eddy January 4, 2007.
Lecture 6: Writing the Project Documentation Part IV.
An evaluation of tools for static checking of C++ code E. Arderiu Ribera, G. Cosmo, S. M. Fisher, S. Paoli, M. Stavrianakou CHEP2000, Padova,
Feedback from LHC Experiments on using CLHEP Lorenzo Moneta CLHEP workshop 28 January 2003.
© 2011 LabKey Software ExtJS Migration Plan Ben Bimber, Ph.D. LabKey Software.
G.Govi CERN/IT-DB 1 September 26, 2003 POOL Integration, Testing and Release Procedure Integration  Packages structure  External dependencies  Configuration.
More About Data Types & Functions. General Program Structure #include statements for I/O, etc. #include's for class headers – function prototype statements.
Chapter 9 Separate Compilation and Namespaces. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. Slide 2 Overview Separate Compilation (9.1)
Copyright © 2008 Pearson Addison-Wesley. All rights reserved. Chapter 12 Separate Compilation and Namespaces.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 12 Separate Compilation and Namespaces.
February 28, 2005 Introduction to Classes. Object Oriented Programming An object is a software bundle of related variables and methods. Software objects.
Separate distribution of the analysis code (and more) P. Hristov 19/03/2014.
11 Introduction to Object Oriented Programming (Continued) Cats.
Transition to SVN server: follow up P.Hristov 24/01/2008.
1 Comments to SPI. 2 General remarks Impressed by progress since last review Widespread adoption by experiments and projects Savannah, ExtSoft Build system.
JRA1 Meeting – 09/02/ Software Configuration Management and Integration EGEE is proposed as a project funded by the European Union under contract.
Configuration & Build Management. Why Software Configuration Management ? The problem: Multiple people have to work on software that is changing More.
CLHEP Infrastructure Improvements CHEP 2004 Lynn Garren, FNAL and Andreas Pfeiffer, CERN.
Use of CMT in LHCb CMT Workshop, LAL (Orsay) 28 th February - 1 st March 2002 P. Mato / CERN.
Siemens TIA Portal Openness Feature Functionality and Possible Use European Spallation Source – Integrated Control System Division Nick Levchenko CERN.
Source Control Dr. Scott Schaefer. Version Control Systems Allow for maintenance and archiving of multiple versions of code / other files Designed for.
Software Configuration Management -Subversion- RTLAB YuJin Park.
Dag Toppe Larsen UiB/CERN CERN,
Dag Toppe Larsen UiB/CERN CERN,
Source Control Dr. Scott Schaefer.
Separate Compilation and Namespaces
Learning Objectives What else in C++ Bitwise operator
Separate Compilation and Namespaces
Separate Compilation.
Joe Clarke (presenting)
More About Data Types & Functions
Moving applications to HDF
C++ Compilation Model C++ is a compiled language
Beta releases and Product Management
Instructor: Dr. Michael Geiger Spring 2019 Lecture 4: Functions in C++
EECE.3220 Data Structures Instructor: Dr. Michael Geiger Spring 2019
ROOT Support and Developments at FNAL
Presentation transcript:

Migration to ISO C++ an overview Gabriele Cosmo CERN - IT/ASD

ESTEC Geant4 WorkshopGabriele Cosmo, Migration to ISO C++2 Motivations & Goals It’s now a requirement which needs to be satisfied –More and more users are now developing software ISO/ANSI compliant –More and more compilers are now (finally) updating to support the standard –Somehow dictated also by the adoption of STL Make it fast and painless –Geant4 developers should NOT be directly involved –Avoid freezing of repository –Adopt a definitive solution Allow backward compatibility

ESTEC Geant4 WorkshopGabriele Cosmo, Migration to ISO C++3 The main source of the problem “New” I/O library headers & std namespace –stream buffers, formatting and manipulators, string streams, file streams,... Deprecation of C-style headers –,,,,,,,,... Mixed styles not allowed Requirement for us to still support old style See C++ Standard report document: pages including revisions and appendixes... FOR MORE...

ESTEC Geant4 WorkshopGabriele Cosmo, Migration to ISO C++4 Solution adopted in CLHEP Definition of ad-hoc I/O headers and use std:: namespace directly in the code –fstream.h, iomanip.h, iostream.h, strstream.h #ifndef HEP_USE_STD #include #else #include #endif HEP_USE_STD set automatically by configuration scripts at installation, where: #ifndef HEP_USE_STD #ifndef std #define std #endif

ESTEC Geant4 WorkshopGabriele Cosmo, Migration to ISO C++5 Possible solutions... 1 Define in global ad-hoc I/O headers for streams: G4iostream.h, … 2 Either one (or a combination) of the following: Properly define g4cout, g4cin, g4cerr, g4endl Define G4std 3 Modify G4 code accordingly 4 Introduction of G4_USE_STD control flag Adopt a similar strategy for replacing deprecated C-style headers from code IN ADDITION...

ESTEC Geant4 WorkshopGabriele Cosmo, Migration to ISO C++6 Strategy Evaluate impact of changes in the existing code including possible unforeseen changes required Study possible side-effects introduced by different (supported) implementations of STL on different (supported) platforms/compilers Give permission to a single individual (or dedicated group of experts) to commit changes to repository. Commit code on the HEAD after proper testing (resolve possible clashes at committal time) Gradually collect all new tags and build a reference version including the complete migration Add new (minor) code-guidelines when handling standard system headers