Max Rees (they/them)
Senior Curriculum Development Specialist
Department of Computer Science Purdue University
Interesting articles on the C programming language (and adjacent topics)
[HTML] Constant Integer Type Declarations Initialized With Constant Expressions Should Be Constants . 16 June 2024 by JeanHeyd Meneide.
[HTML] Option Soup: the subtle pitfalls of combining compiler flags . 29 January 2024 by Mozilla's Serge Guelton & Yannis Juglaret.
[HTML] Better handling of integer wraparound in the kernel . 26 January 2024 by LWN's Jonathan Corbet.
[HTML] C23: a slightly better C . 21 January 2024 by Daniel Lemire.
[HTML] Modern C for Fedora (and the world) . 08 December 2023 by LWN's Jonathan Corbet.
[HTML] setenv
is not Thread Safe and C Doesn't Want to Fix It . 19 November 2023 by Evan Jones.
[HTML] The Sinking of the Itanic . 17 November 2023 by A. Wilcox.
[HTML] Better string handling for the kernel . 26 October 2023 by LWN's Jonathan Corbet.
[HTML] Running the "Reflections on Trusting Trust" Compiler . 25 October 2023 by Google's Russ Cox.
[HTML] Recent improvements in GCC diagnostics . 13 October 2023 by LWN's Jonathan Corbet.
[HTML] How were the signs for logical and arithmetic operators decided? 26 September 2023 on the retrocomputing Stack Exchange.
[PDF] ELF binaries and all the things that happen before main()
. 15 September 2023 by Janne Johansson at EuroBSDCon 2023.
[HTML] Scope-based resource management for the kernel . 15 June 2023 by LWN's Jonathan Corbet.
[HTML] The Linux kernel will fix some peculiar argv
usage in execve(2)
. 05 June 2023 by the University of Toronto's Chris Siebenmann.
[HTML] Improvements to static analysis in the GCC 13 compiler . 31 May 2023 by Red Hat's David Malcolm.
[HTML] RFC: Enforcing Bounds Safety in C (-fbounds-safety
) . 24 May 2023 by Apple's Yeoul Na.
[HTML] Experimental feature gate for extern "crabi"
ABI . 09 May 2023 by Josh Triplett.
[MAIL] More C type errors by default for GCC 14 . 09 May 2023 by Red Hat's Florian Weimer.
[HTML] New C features in GCC 13 . 04 May 2023 by Red Hat's Marek Polacek.
[HTML] Flattening ASTs (and Other Compiler Data Structures) . 01 May 2023 by Cornell's Professor Adrian Sampson.
[HTML] A kernel without buffer heads . 01 May 2023 by LWN's Jonathan Corbet.
[HTML] My favorite C compiler flags during development . 29 April 2023 by Chris Wellons.
[HTML] The Full-Source Bootstrap: Building from source all the way down . 26 April 2023 by Janneke Nieuwenhuizen and Ludovic Courtès.
[MAIL] RFC: More C errors by default in GCC 14 (no more implicit function decls) . 18 April 2023 by Red Hat's Florian Weimer.
[HTML] Memory Allocation . 13 April 2023 by Sam Rose.
[HTML] Writing portable ARM64 assembly . 13 April 2023 by Ariadne Conill.
[HTML] The early days of Linux . 12 April 2023 by Lars Wirzenius.
[HTML] The shrinking role of semaphores . 07 April 2023 by LWN's Jonathan Corbet.
[HTML] How SerenityOS declares ssize_t
. 04 April 2023 by Andreas Kling.
[HTML] A leaner <iostream>
in libstdc++
for GCC 13 . 03 April 2023 by Red Hat's Patrick Palka.
[HTML] C++17 creates a practical use of the backward array index operator . 03 April 2023 by Microsoft's Raymond Chen.
[HTML] Some possible reasons for 8-bit bytes . 06 March 2023 by Julia Evans.
[HTML] Safety and Soundness in Rust . 05 March 2023 by Jack O'Connor.
[HTML] goto
phobia considered harmful (in C) . 26 February 2023 by Jakub Łukasiewicz.
[HTML] size_t
Is Not int
. 12 February 2023 by Chris Palmer.
[HTML] Undefined behavior, and the Sledgehammer Principle . 02 February 2023 by JeanHeyd Meneide.
[HTML] C was not created as an abstract machine (of course) . 01 February 2023 by the University of Toronto's Chris Siebenmann.
[HTML] All about UndefinedBehaviorSanitizer . 29 January 2023 by Fangrui Song.
[HTML] Distinguishing an Interpreter from a Compiler . 26 January 2023 by by King's College - London's Laurence Tratt.
[HTML] Bounded Flexible Arrays in C . 23 January 2023 by Kees Cook.
[HTML] Nolibc: a minimal C-library replacement shipped with the kernel . 20 January 2023 by Willy Tarreau.
[HTML] Setting the clock ahead to see what breaks . 19 January 2023 by Rachel Kroll.
[HTML] A brave new world: building glibc with LLVM . 17 January 2023 by Collabora's Adrian Ratiu.
[HTML] Some notes on working with old C code . 02 January 2023 by Sean Conner.
[HTML] What’s the deal with Cisco devices in file
output, anyway? 27 December 2022 by A. Wilcox.
[HTML] Checked integer arithmetic in the prospect of C23 . 18 December 2022 by INRIA's Jens Gustedt.
[HTML] Goodbye to the C++ Implementation of Zig . 07 December 2022 by Andrew Kelley.
[HTML] Falsehoods programmers believe about undefined behavior . 27 November 2022 by Predrag Gruevski.
[HTML] Figuring out round
, floor
and ceil
with integer division . 25 November 2022 by Clément Bœsch.
[HTML] Everything I wish I knew when learning C . 18 November 2022 by Tom Mewett.
[HTML] Considering C99 for curl . 17 November 2022 by Daniel Stenberg.
[HTML] How to categorize C programs by behavior . 15 November 2022 by Red Hat's Martin Sebor.
[HTML] P2723R0: Zero-initialize objects of automatic storage duration . 15 November 2022 by JF Bastien.
[HTML] Modernizing Fedora's C code . 02 November 2022 by LWN's Jake Edge.
[HTML] Would you like signs with those chars? 24 October 2022 by LWN's Jonathan Corbet.
[HTML] Time is an illusion, Unix time doubly so... 23 October 2022 by Jan Schaumann.
[HTML] Always use [closed, open)
intervals . 07 October 2022 by Fernando Hurtado Cardenas.
[HTML] How to fix an ancient GDB problem . 29 September 2022 by LWN's Jonathan Corbet.
[HTML] Supporting CHERI capabilities in GCC and glibc . 26 September 2022 by LWN's Jonathan Corbet.
[HTML] BPF as a safer kernel programming environment . 23 September 2022 by David Vernet.
[HTML] Safer flexible arrays for the kernel . 22 September 2022 by LWN's Jake Edge.
[HTML] Introducing io_uring_spawn . 20 September 2022 by LWN's Jake Edge.
[HTML] GCC's new fortification level: the gains and costs . 17 September 2022 by Red Hat's Siddhesh Poyarekar.
[HTML] The road to Zettalinux . 16 September 2022 by LWN's Jonathan Corbet.
[HTML] Someone's Been Messing With My Subnormals! 06 September 2022 by New York Univeristy - Tandon School of Engineering's Brendan Dolan-Gavitt. This is nominally a story about Python's packaging ecosystem, but -ffast-math
rears its ugly head here.
[HTML] What's in a (type) name? 02 September 2022 by LWN's Jonathan Corbet.
[HTML] C xor C++ Programming: Situations where the same code has different meaning in C and C++ . 03 August 2022 by Intel's Aaron Ballman.
[PDF] C23 working draft . 08 June 2022.
[HTML] A game for learning C operator precedence . 08 May 2022 by Hugo Landau.
[HTML] You should know: rand()
may call malloc()
. 07 April 2022 by Adam Dunkels.
[HTML] Moving the kernel to modern C . 24 February 2022 by LWN's Jonathan Corbet.
[HTML] C99 doesn't need function bodies, or 'VLAs are Turing complete' . 19 February 2022.
[PDF] How ISO C became unusable for operating systems development . 19 January 2022 by Victor Yodaiken.
[HTML] glibc
is still not Y2038 compliant by default . 29 December 2021 by Ariadne Conill.
[HTML] Stop defining feature-test macros in your code . 21 December 2021 by Ariadne Conill.
[HTML] Uninitialized stack variables . 24 November 2021 by Jan Schaumann.
[HTML] Duff's device in 2021 . 18 November 2021 by Chloé Lourseyre.
[HTML] V7 Unix had no stack size limit, and when Unix acquired one . 10 October 2021 by the University of Toronto's Chris Siebenmann.
[HTML] Stack size is invisible in C and the effects on "portability" . 27 September 2021 by the University of Toronto's Chris Siebenmann.
[HTML] Pitfalls of VLA in C . 05 July 2021 by Jakub Łukasiewicz.
[HTML] The Unix process API is unreliable and unsafe . 08 May 2021 by Spencer Baugh.
[HTML] "A damn stupid thing to do"—the origins of C . 09 December 2020 by Ars Technica's Richard Jensen.
[HTML] Peeking under the hood of GCC's __builtin_expect
. 23 March 2020 by Tudor Brindus.
[HTML] The worst of time64 breakage . 15 February 2020 by Rich Felker.
[HTML] Some obscure C features . 21 August 2019 by Victor Collod.
[PDF] ISO/IEC JTC1/SC22/WG14 N2363: C provenance semantics: examples . 01 April 2019.
[HTML] But is it atomic? 29 November 2018 by Kristian Köhntopp.
[VIDEO] The History of Fire Escapes . 08 August 2018 by Squarespace's Tanya Reilly.
[VIDEO] Where did Bytes Come From? 01 May 2018 by Professor David Brailsford, University of Nottingham.
[PDF] Taming undefined behavior in LLVM . PLDI 2017 by Juneyoung Lee, Yoonseung Kim, Youngju Song, Chung-Kil Hur, Sanjoy Das, David Majnemer, John Regehr, and Nuno P. Lopes.
[HTML] ABC: A C compiler for printable x86 . SIGBOVIK 2017 by Tom Murphy VII.
[PDF] Detecting Strict Aliasing Violations in the Wild . VMCAI 2017 by Pascal Cuoq, Loïc Runarvot, and Alexander Cherepanov.
[HTML] On sprintf()
Fails . 16 July 2016 by Georg Sauthoff.
[HTML] main
is usually a function. So then when is it not? 26 January 2015 by James Rowe.
[HTML] Undefined behavior can result in time travel . 27 June 2014 by Microsoft's Raymond Chen.
[HTML] Undefined behaviour . 13 February 2014 by ARM's Szabolcs Nagy.
[HTML] Incorrect configure checks for availability of functions . 14 August 2013 by Rich Felker.
[HTML] NULL
considered harmful . 04 July 2013 by Rich Felker.
[HTML] Don't be afraid of variably modified types . 09 January 2011 by INRIA's Jens Gustedt.
[HTML] How many bits has a byte? 01 June 2010 by INRIA's Jens Gustedt.
[USENET] Operator precedence . 22 October 1982 by Dennis Ritchie.
Last modified on
Sat 22 Jun 2024 11:50 AM EDT.