Nothing Special   »   [go: up one dir, main page]

skip to main content
column
Open access

Catch-23: The New C Standard Sets the World on Fire

Published: 29 March 2023 Publication History

Abstract

A new major revision of the C programming language standard is nearly upon us. C23 introduces pleasant conveniences, retains venerable traps for the unwary, and innovates a gratuitous catastrophe. A few steps forward, much sideways shuffling, and a drunken backward stumble into the fireplace come together in the official dance of C standardization, the Whiskey Tango Foxtrot.

References

[1]
C Standards Committee (Working Group 14). Documents; https://www.open-std.org/jtc1/sc22/wg14/www/wg14_document_log.htm.
[2]
C89 Standard; https://web.archive.org/web/20161223125339/http://flash-gordon.me.uk/ansi.c.txt.
[3]
C89 Rationale, ANSI X3J11/88?151, November 1988. Available via https://en.wikipedia.org/wiki/ANSI_C.
[4]
Computer Business Review staff. 1988. Proposed ANSI C language standard draws criticism as comment period ends; https://techmonitor.ai/technology/proposed_ansi_c_language_standard_draws_criticism_as_comment_period_ends.
[5]
C99 Standard (draft n1256). 2007. https://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf.
[6]
C99 Rationale. 2003. https://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf.
[7]
C11 Standard (draft n1570). 2011. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
[8]
C17 Standard (draft n2176). https://web.archive.org/web/20181230041359/http:/www.open-std.org/jtc1/sc22/wg14/www/abq/c17_updated_proposed_fdis.pdf
[9]
C23 Standard (draft n3054). 2022. https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3054.pdf.
[10]
Ballman, A. 2022. WG14 document n3065: C xor C++ programming; https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3065.pdf. [Also available at Reference 1.]
[11]
Gustedt, J. 2019. Modern C, second edition. Manning; https://gustedt.gitlabpages.inria.fr/modern-c/.
[12]
Gustedt, J. 2021. WG14 document n2826v2. Add annotations for unreachable control flow; https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2826.pdf. [Also available at Reference 1.]
[13]
Harbison, S. P., Steele III, G. L. 2002. C: A Reference Manual, fifth edition. Prentice Hall.
[14]
Hatton, L. 1995. Safer C: Developing Software for High-Integrity and Safety-Critical Systems. McGraw-Hill.
[15]
Kelly, T. 2022. Literate executables. acmqueue 20(5); https://queue.acm.org/detail.cfm?id=3570938.
[16]
Kelly, T., Gu, W., Maksimovski, V. 2021. Schrödinger's code: undefined behavior in theory and practice. acmqueue 19(2); https://queue.acm.org/detail.cfm?id=3468263.
[17]
Kernighan, B., Pike, R. 1999. The Practice of Programming. Addison-Wesley.
[18]
Kernighan, B. W., Ritchie, D. M. 1988. The C Programming Language, second edition. Prentice Hall.
[19]
Klemens, B. 2014. 21st Century C, second edition. O'Reilly Media.
[20]
Marsaglia, G. 2003. Xorshift RNGs. Journal of Statistical Software 8(14); https://www.jstatsoft.org/index.php/jss/article/view/v008i14/916.
[21]
McKenney, P. E., Michael, M., Mauer, J., Sewell, P., Uecker, M., Boehm, H., Tong, H., Douglas, N., Rodgers, T., Deacon, W., Wong, M. 2019. WG14 document n2443: Lifetime-end pointer zap; https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2443.pdf. [Also available at Reference 1.]
[22]
Plauger, P. J. 1992. The Standard C Library. Prentice Hall.
[23]
Seacord, R. C. 2019. WG14 document n2464: Zero-size reallocations are undefined behavior; https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2464.pdf. [Also available at Reference 1.]
[24]
Shiffman, M. 2022. A man of all reasons. Harper's Magazine (April), 15?16; https://harpers.org/archive/2022/04/steven-pinker-meets-socrates/.
[25]
Torvalds, L. 2018. Linux kernel mailing list posting; https://lkml.org/lkml/2018/6/5/769.
[26]
C FP Group. 2021. WG14 document n2670: Zeros compare equal; https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2670.pdf. [Also available at Reference 1.]
[27]
Yodaiken, V. 2021. How ISO C became unusable for operating systems development. 11th Workshop on Programming Languages and Operating Systems (PLOS '21). https://doi.org/10.1145/3477113.3487274.

Cited By

View all

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image Queue
Queue  Volume 21, Issue 1
Data Science
January/February 2023
125 pages
ISSN:1542-7730
EISSN:1542-7749
DOI:10.1145/3589655
Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 29 March 2023
Published in QUEUE Volume 21, Issue 1

Permissions

Request permissions for this article.

Check for updates

Badges

Author Tags

  1. Code
  2. Development
  3. Drill Bits

Qualifiers

  • Column
  • Opinion
  • Editor picked

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)8,100
  • Downloads (Last 6 weeks)700
Reflects downloads up to 14 Feb 2025

Other Metrics

Citations

Cited By

View all

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Magazine Site

View this article on the magazine site (external)

Magazine Site

Login options

Full Access

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media