Git Product home page Git Product logo

cxx-abi's Introduction

The Itanium C++ ABI

This is the central repository for discussion and development of the Itanium C++ ABI specfication.

Change process

C++ is a compiled language, and binary compatibility between different compilations is a core goal of the Itanium C++ ABI. Many details of the ABI cannot be changed without breaking compatibility in some way, and we cannot accept proposals to make such changes. If you are hoping to, say, change the default dispatch algorithm for virtual functions on Linux, you're not going to make much headway here. That said, there are several major categories of proposal which we can accept:

  • Proposals that are clearly identified as being for "future ABIs". Not all projects demand the same level of rigor in binary compatibility, and sometimes there are clear opportunities for "breaks", such as when an operating system is ported to a new architecture. We are collecting recommendations for changes to make in such a future ABI.

  • Proposals to specify the implementation of new language features. New language features do not generally affect backward compatibility because they are usually not used in older code.

    (There are exceptions. Sometimes new language rules change the interpretation of old code, and new language features can be adopted in header declarations for old code. It is part of an ABI maintainer's job to evaluate the impact of such changes and provide guidance to the language committee.)

  • Proposals to fix a bug in the ABI. It sometimes happens that the ABI overlooks some possibility in a way that causes code to be miscompiled. (Most commonly, two declarations that the language considers different are mangled the same way because of missing information or ambiguities in the mangling grammar.) Proposals to fix such problems are generally welcome, although they must be designed carefully to minimize binary incompatibilities.

  • Editorial and organizational improvements. The ABI specification should, ideally, be a clear guide to implementers and a helpful reference for sophisticated users. Changes to clarify wordings, improve document structure, and so on are always welcome.

Non-editorial changes should be proposed by creating a new issue via the standard GitHub interface. The issue description should explain the problem and (if applicable) the proposed solution. The solution can be discussed in the comments. When, eventually, a pull request is submitted for the issue, it will be accepted after consensus has been reached and several weeks have passed to give all contributors an opportunity to comment. (Changes which have already been discussed on cxx-abi-dev and simply haven't been merged into the repository do not need to undergo this additional waiting period.)

Editorial changes should just be submitted as pull requests.

Additional documents hosted here

cxx-abi's People

Contributors

azru0512 avatar bdixon-mentor avatar clm44 avatar cpplearner avatar epilk avatar jicama avatar jwakely avatar maskray avatar mikeherrick avatar nickrchambers avatar orivej avatar pcc avatar rbdixon avatar ricardoanguiano avatar rjmccall avatar saldivarcher avatar tahonermann avatar urnathan avatar zmodem avatar zygoloid avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.