Thread

  1. Add returns_nonnull to infallible allocators

    Tristan Partin <tristan@partin.io> — 2026-07-06T18:10:27Z

    Postgres memory allocators, by default, ERROR out on memory allocation 
    failures. An ERROR leads to a longjmp, which means that the caller of 
    the allocator will never see a NULL return value. We can explicitly let 
    the compiler know about this behavior by adding the returns_nonnull 
    attribute to the allocators that follow this behavior. Postgres does 
    support _extended versions of some of the allocators that take a flaks 
    argument. The caller can provide the MCXT_ALLOC_NO_OOM flag to these 
    allocators to request that they return NULL on allocation failure 
    instead of ERROR-ing out. The _extended allocators cannot be marked as 
    returns_nonnull because of that.
    
    By using returns_nonnull, we can help the compiler to optimize call 
    sites.
    
    -- 
    Tristan Partin
    PostgreSQL Contributors Team
    AWS (https://aws.amazon.com)
    
    
    
    
  2. Re: Add returns_nonnull to infallible allocators

    Tristan Partin <tristan@partin.io> — 2026-07-06T18:11:02Z

    On Mon Jul 6, 2026 at 6:10 PM UTC, Tristan Partin wrote:
    > Postgres memory allocators, by default, ERROR out on memory allocation 
    > failures. An ERROR leads to a longjmp, which means that the caller of 
    > the allocator will never see a NULL return value. We can explicitly let 
    > the compiler know about this behavior by adding the returns_nonnull 
    > attribute to the allocators that follow this behavior. Postgres does 
    > support _extended versions of some of the allocators that take a flaks 
    > argument. The caller can provide the MCXT_ALLOC_NO_OOM flag to these 
    > allocators to request that they return NULL on allocation failure 
    > instead of ERROR-ing out. The _extended allocators cannot be marked as 
    > returns_nonnull because of that.
    >
    > By using returns_nonnull, we can help the compiler to optimize call 
    > sites.
    
    ...
    
    -- 
    Tristan Partin
    PostgreSQL Contributors Team
    AWS (https://aws.amazon.com)