ISO C23 Standard Published
ISO/IEC 9899:2024 is the latest C programming language standard, enhancing portability and detailing syntax and rules, but it does not cover program transformation mechanisms or system limits.
Read original articleISO/IEC 9899:2024 is the latest international standard for the C programming language, published in October 2024. This document outlines the structure and interpretation of C programs, aiming to enhance their portability across various data-processing systems. It serves as a guide for implementers and programmers, detailing the syntax, constraints, and semantic rules necessary for interpreting C programs. Additionally, it specifies how input and output data should be represented. However, the standard does not cover the mechanisms for transforming C programs for system use, invoking them, or handling data transformations. It also does not define the limits of program size or complexity that a specific system can handle. An annex within the document addresses potential portability issues that C programs may face. This edition replaces the previous ISO/IEC 9899:2018 standard and is part of the ongoing efforts to maintain and update programming language standards in line with technological advancements.
- ISO/IEC 9899:2024 is the new standard for the C programming language.
- The standard aims to improve the portability of C programs across different systems.
- It specifies syntax, constraints, and semantic rules for C programming.
- The document does not address mechanisms for program transformation or data handling.
- It includes an annex discussing portability issues related to C programs.
Related
The C Standard charter was updated, now with security principles as well
The ISO/IEC JTC1/SC22/WG14 committee oversees C Standard development, focusing on portability, efficiency, and stability. Collaboration with the C++ committee ensures compatibility. Principles guide feature integration, code efficiency, security, and adaptability.
C23 is cancelled due to missing the publication deadline
ISO/IEC DIS 9899, a Draft International Standard, is set to replace ISO/IEC 9899:2018. It focuses on the C language, undergoing approval processes within ISO/IEC JTC 1/SC 22. Aimed at supporting Sustainable Development Goals.
New Features in C++26
The ISO released new C++ standards on a three-year cycle, with C++26 proposals open until January 2025. Updates include hazard pointers, user-space RCU support, debugging headers, and template enhancements for improved functionality.
The C23 edition of Modern C is now available for free
The C23 edition of Modern C is now available for free download, featuring updates like bit-precise types, enhanced enumeration types, and resources for transitioning to C23 on existing platforms.
C++23: ISO/IEC 14882:2024
ISO/IEC 14882:2024 is the latest C++ standard, published in October 2024, replacing the 2020 version. It includes extensive features and supports Sustainable Development Goal 9 on industry and innovation.
Another nonstandard function I often use if fopencookie, and another feature I often use is the Elvis operator, but on Wikipedia I do not see those things listed in the list of C23. And then, there is -fwrapv, which I also often use. Another thing I would want is dynamic argument lists (including but not limited to variable argument lists) constructed at run time, and the ability to control memory layout in some ways.
However, I would think that underscores would be better than using apostrophes for digit separation, to avoid messing up programs that expect the apostrophe to have its existing meaning (although I have been told that it conflicts with C++). I would think "0o" prefix for octal numbers would also be good, but it is too late to change it now. I also think that adding the Unicode string types might not be a good idea, since it might encourage APIs to use it in circumstances where it ought not to care about the character set (although it might be possible to cast the type, that just adds extra stuff). Programming languages and file formats should not assume that Unicode is the only character set, because it isn't. The source format should be ASCII (although non-ASCII bytes are allowed as well, it might be a potential security issue to allow them in some environments). I am not so sure that __has_include is really a good idea either; you can use #ifdef to check if something is defined, either already defined or by a command-line switch; it is better to allow specifying compile options to use or not use them that way instead, I think.
And, I also think that it isn't so good that the standards are not freely available, but that was always how it worked. They could change that (unlike some of the other problems with the C programming language) but they don't. At least, the drafts are available.
I am asking because I am in the market for purchasing a book on the C programming language.
I am an experienced software engineer, but with experience in Java, Python, JS and other few languages. I would like to learn C and C++ deeply.
For C++, I ended up buying Stroustrup's "A tour of C++".
I am looking for something similar in C.
Is there a library that will loan me a copy?
• n3221 covering n3219 (ISO DIS Preliminary Draft) and n3220 (C2Y Working Draft
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3221.htm
>> Specifically for the PDF Draft n3220, the only C2Y specific change that has approval is an editorial one to fix a footnote in Annex K to state "potentially reserved" rather than just "reserved". There are no other changes between the n3220 and n3219. <<
• n3300 covering the n3299 C2y draft
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3299.pdf
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3300.htm
>> This draft includes some additional Introduction material and sweeping editorial changes to comply with the ISO/IEC Directives, Part 2. Most of these were to ensure that the wording was ready for publication of C23, and were merged into the current C2Y draft. This will allow people writing papers to have a proper base to work their papers from, as well as set the record straight since the last published draft of C2Y. <<
• n3302 covering the n3301 C2y draft
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3301.pdf
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3302.htm
>> This report is after the publication submission process for C23 and the June 2024 Virtual Meeting which commenced adding new features and bugfixes to the next version of C, coloquially named C2Y/C2y. <<
So n3299 is identical to C23 apart from a footnote in Annex K and the version rubric. The first draft with substantive C2y changes is n3301.
Related
The C Standard charter was updated, now with security principles as well
The ISO/IEC JTC1/SC22/WG14 committee oversees C Standard development, focusing on portability, efficiency, and stability. Collaboration with the C++ committee ensures compatibility. Principles guide feature integration, code efficiency, security, and adaptability.
C23 is cancelled due to missing the publication deadline
ISO/IEC DIS 9899, a Draft International Standard, is set to replace ISO/IEC 9899:2018. It focuses on the C language, undergoing approval processes within ISO/IEC JTC 1/SC 22. Aimed at supporting Sustainable Development Goals.
New Features in C++26
The ISO released new C++ standards on a three-year cycle, with C++26 proposals open until January 2025. Updates include hazard pointers, user-space RCU support, debugging headers, and template enhancements for improved functionality.
The C23 edition of Modern C is now available for free
The C23 edition of Modern C is now available for free download, featuring updates like bit-precise types, enhanced enumeration types, and resources for transitioning to C23 on existing platforms.
C++23: ISO/IEC 14882:2024
ISO/IEC 14882:2024 is the latest C++ standard, published in October 2024, replacing the 2020 version. It includes extensive features and supports Sustainable Development Goal 9 on industry and innovation.