Re: [Cbor] Consolidated set of tags for map-like entities

Emile Cormier <> Tue, 16 March 2021 17:37 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 3B3893A14FB for <>; Tue, 16 Mar 2021 10:37:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id EsaxCzEJu7rx for <>; Tue, 16 Mar 2021 10:36:58 -0700 (PDT)
Received: from ( [IPv6:2607:f8b0:4864:20::102f]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 49A6C3A14FD for <>; Tue, 16 Mar 2021 10:36:58 -0700 (PDT)
Received: by with SMTP id gb6so11015442pjb.0 for <>; Tue, 16 Mar 2021 10:36:58 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=swQboihZcMb71kED4SaXNs6pv+rC4d2minb4c6BzpxE=; b=j7iEXKgN4aEVaioPPbhPW9ZUmPg4nI8nl0x6lE9gHVmJnztnrVqOUxlF8BioBuF13A YBBfiEcpWLXnSeNRmR1hpLwoGs1L7z/TG0U7bteBLXzcjUYdLLbbFmE2PDlaUavv4lb2 KxpfBLRh71ySw/QP5MoKTTkYh7I4gGnyOdKL3ao9azA+cH+TJbvr4IXvyZKTNBIFKWwy RZChxeuUr1QfGPXrrHWzBBKDulw8mBBwlum/3vJlSQa/lT45sBHzAQnI3YkMdsuPS6Vy Qv4cyErHANlHo5niE3z6uG6IBq9u41hOn8RVCFMBfeaUV/5Uf91ZaH2EWFUidBAstS2h GqOA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=swQboihZcMb71kED4SaXNs6pv+rC4d2minb4c6BzpxE=; b=aMPs1Rt767VGdP49/RWWz3yEg8JyEuD64n+duVZWNs0gTr+183i8rLOHNN/nW4EF2R ConiU1L6sc5T2RbXF0F0W5drViN9cd9YwwUvtLpkUou5PO3Bgqop7nM/RYY2Nqao5iR6 KqW0FRUrOSH3XXvm2usKp1TLPQsLshdDAov7HfMxkHTVp2tzKAthuzUsOY8uk9+d5T0G tqyfKMjQp/GLcHEQaJif28ffGdTioK0otti+xJC9Ky77bNtayHV/v+4Dd5hyVFZpU/pn Gghbr4aMBTRZ4Gf/1yOM5jW1xAE4Qf4IhSFyAHK/1rK3bM4R2TFSS1Yp9G7eaCp3Td/Q wXPg==
X-Gm-Message-State: AOAM531FlnKJpRzudESz1h1pIglus+2ARplcvgT09qDSAm0Ld+qvUh2J Ir/80W1cEpSmk1rlnL6Xe1mrHLVZv7hmlzNHpOVnG0fgqLJzeA==
X-Google-Smtp-Source: ABdhPJwJnw9Tc3/NbOnPSHnamiK+8DZcBOygoomSzVhhGd7Se8CMby2HaJblscVSqq3oCO6NPyZjNZo3FauKVct2Hpc=
X-Received: by 2002:a17:902:4c:b029:e6:6cb9:9153 with SMTP id 70-20020a170902004cb02900e66cb99153mr514055pla.32.1615916216852; Tue, 16 Mar 2021 10:36:56 -0700 (PDT)
MIME-Version: 1.0
References: <> <>
In-Reply-To: <>
From: Emile Cormier <>
Date: Tue, 16 Mar 2021 14:36:45 -0300
Message-ID: <>
To: Kio Smallwood <>
Content-Type: multipart/alternative; boundary="00000000000017a6f105bdaad00e"
Archived-At: <>
Subject: Re: [Cbor] Consolidated set of tags for map-like entities
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Concise Binary Object Representation \(CBOR\)" <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 16 Mar 2021 17:37:00 -0000

Hi Kio,

I'll add an information section on how the various tags relate to
programming language data structures. I could start with JS and C++ data
structures, and allow other folks to send or PR me the ones for other

For homogeneous key/values, it was actually my intention that the first
key/value encountered "establishes" the type for the remainder. A decoder
could reject a homogenous map where a key/value does not match the type
established by the first.

You've made me realize that the interpretation for "homogenous" could be
tricky for numeric types. For example, if the first homogenous key is a
positive integer, can the decoder assume that the following keys may also
include negative integers and floats? I'll check what it says for
homogenous arrays in . It may have
already been settled there.

This also begs the question: what does "homogeneous" mean for key/value
types that are themselves arrays or maps?

Thanks for the feedback!

On Mon, Mar 15, 2021 at 4:36 PM Kio Smallwood <>

> Hi Emile,
> Thanks for enumerating all of the possibilities. I have a few thoughts:
> * Would it be worth noting which programming languages and environments
> already make use of each type? For example, users of the cbor2 python
> library would only see tag 128 (equivalent to major type 5) tag 129, 130,
> for ordered and multimaps, and 132 when inter-operating with
> javascript/json. The rest would be very strange to encounter in a Python
> datastructure.
> * For the Homogeneous keys/values, should we (codec implementers) assume
> that the type of the first key/value encountered in the data item
> determines the type of the remainder?
> Thanks,
> Kio
> On 2021-03-12 23:50, Emile Cormier wrote:
> Hi Everyone,
> I've been corresponding privately with Prof. Bormann about a new tag I
> proposed for encoding multimaps as arrays or pairs. He's made me aware of
> your recent discussion about another proposed tag for encoding "ordered"
> maps, where the insertion order must be preserved. Carsten has indicated to
> me his desire to consolidate all of these map-related tags together.
> I would like to contribute to this endeavor of consolidating map-related
> tags. To get the discussion started, I would like to share with you a draft
> proposal I've written to serve as a starting point:
> Here's a brief summary:
>> This document proposes a consolidated set of CBOR tags for map-like
>> entities involving key-value pairs. These tags encode the following
>> meta-data concerning map-like entities:
>>    - the homogeneity of the key and value types,
>>    - the preservation of the insertion order of the key-value pairs,
>>    - the uniqueness of the keys, and,
>>    - the major type used to encode the key-value pairs.
> My interest in CBOR stems from my work on a new C++ serialization library
> that can support any JSON-like encoding. This library is closed source for
> now, but I may be able to convince my employer to make it open source in
> the future.
> I'm also involved with the WAMP protocol, which allows CBOR as one of its
> encodings.
> I'm looking forward to collaborating with you and I hope that we can come
> to a solution that satisfies everyone's needs.
> Cheers,
> Emile Cormier
> _______________________________________________
> CBOR mailing list