Re: [Cbor] dCBOR moving from numerically-typeless systems

Wolf McNally <wolf@wolfmcnally.com> Sun, 12 March 2023 22:02 UTC

Return-Path: <wolf@wolfmcnally.com>
X-Original-To: cbor@ietfa.amsl.com
Delivered-To: cbor@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7D5B3C14CF12 for <cbor@ietfa.amsl.com>; Sun, 12 Mar 2023 15:02:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.897
X-Spam-Level:
X-Spam-Status: No, score=-1.897 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=wolfmcnally-com.20210112.gappssmtp.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id cy_wK79hrSLM for <cbor@ietfa.amsl.com>; Sun, 12 Mar 2023 15:02:18 -0700 (PDT)
Received: from mail-ot1-x32e.google.com (mail-ot1-x32e.google.com [IPv6:2607:f8b0:4864:20::32e]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 306F5C14CE4C for <cbor@ietf.org>; Sun, 12 Mar 2023 15:02:18 -0700 (PDT)
Received: by mail-ot1-x32e.google.com with SMTP id p13-20020a9d744d000000b0069438f0db7eso5785954otk.3 for <cbor@ietf.org>; Sun, 12 Mar 2023 15:02:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wolfmcnally-com.20210112.gappssmtp.com; s=20210112; t=1678658537; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=vzwyNj1PqkW/X8lHW7wO9n8I18fOa0hTnAIll5PGX9Q=; b=QCQg0fVeHinHFdqXxvw9cJqxytREP0DfW/d5QIoTKI6yaLefKYzbaQCJumlJ5C7mUj OnPaiRxMaFb6aKR8+FacMByjYwZrDEI2NK84PzKGhjQBoVxZc3X9+3K8veN42YG5afcn fWRBlYYewOXt4G3OkFxozmEwqplT/UMQYDlIpXddAcs34ZXZ6amtw+2l6qNvK5Sa5aIy JxpDgyjsNDuA5gvDTpq3jgOuWlJVmAPHdGPDdrNLdt1fiyCYkxOjuxQyCesw2Gen4J/3 N/NuluUKlKEeBQvTzIpWA0cOWNZVEWvJmzZR0vFoq5kJbKZ/uEVQ3Di7robrTR3wmsBo y2BQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678658537; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vzwyNj1PqkW/X8lHW7wO9n8I18fOa0hTnAIll5PGX9Q=; b=jadZuO3cJeP0Bc6cagWJO+qxkIWIc2QS7dl1aKk7T0LbtR1XH14Qnl5cgBZlE+pA9d npVCtWBNoA8TqzsyTZCkMKmcfXSP6uXteRT0tXA27bOXDdPIx3VOXLkFauY35o3vSARf 8PzoU+TvUswrvrRLof+N/LcQONDU/381nvVvp0Ez0vIUZdo9S8Pz56Es6AABruH3Szzh Y9zRd7Os2jwd9RMlYxYVDc55QE7fRd/ZaBnjf/IUR2kDD1R8fe0bzgOoY4GBwe0cso0B EJ5ue7vkdayUAdgqFadQiO3XGSTLQ87msoyJ+///NMejz/CRp3rLUd+fjwtlli7uqWWE 50Mw==
X-Gm-Message-State: AO0yUKV3lfr8lZ36GG6w+Dh78LJhicuupBHwzUOO8ym2Sp42nR8pBz4o 49RNbG6M7JVvyNWs225/IjHb1Q==
X-Google-Smtp-Source: AK7set/EKP5fHhZEBCqqzlmNbqjZ4e+YhcfOwneeFF9Ry6Y3P8AFqjOkSeBxh0jyo42P2Ecoqse8/A==
X-Received: by 2002:a9d:603:0:b0:68d:5f85:4951 with SMTP id 3-20020a9d0603000000b0068d5f854951mr4329587otn.11.1678658537322; Sun, 12 Mar 2023 15:02:17 -0700 (PDT)
Received: from smtpclient.apple ([185.222.243.89]) by smtp.gmail.com with ESMTPSA id y30-20020a9d461e000000b00688449397d3sm2523912ote.15.2023.03.12.15.02.16 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 12 Mar 2023 15:02:16 -0700 (PDT)
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3731.400.51.1.1\))
From: Wolf McNally <wolf@wolfmcnally.com>
In-Reply-To: <7AAE85BD-AD41-445C-B747-B80523B068ED@tzi.org>
Date: Sun, 12 Mar 2023 15:02:05 -0700
Cc: cbor@ietf.org
Content-Transfer-Encoding: quoted-printable
Message-Id: <D94A8AF2-401A-4A2F-AA0A-6097169DD0E0@wolfmcnally.com>
References: <2B1FA8CC-AD83-4E58-BE27-B6504F555694@wolfmcnally.com> <8551021E-A1A2-4764-B0DF-D3E7591EC9B6@tzi.org> <FD5D8771-E1CF-4C63-A141-054DE0085399@wolfmcnally.com> <D714A0A4-7452-4C45-8542-7A57A75C9748@tzi.org> <35A71381-A9DD-479C-A7D5-9B06F70B6F50@wolfmcnally.com> <3CE988BD-C87E-4A0C-ADA8-79124FE1FB51@tzi.org> <382FB8D4-03B8-4B92-B7BA-B3760D77D258@wolfmcnally.com> <7AAE85BD-AD41-445C-B747-B80523B068ED@tzi.org>
To: Carsten Bormann <cabo@tzi.org>
X-Mailer: Apple Mail (2.3731.400.51.1.1)
Archived-At: <https://mailarchive.ietf.org/arch/msg/cbor/9bZm20jNWSTCKRO1pHMexCyqe6c>
Subject: Re: [Cbor] dCBOR moving from numerically-typeless systems
X-BeenThere: cbor@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: "Concise Binary Object Representation \(CBOR\)" <cbor.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/cbor>, <mailto:cbor-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/cbor/>
List-Post: <mailto:cbor@ietf.org>
List-Help: <mailto:cbor-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/cbor>, <mailto:cbor-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 12 Mar 2023 22:02:22 -0000

Carsten,

> On Mar 12, 2023, at 1:47 PM, Carsten Bormann <cabo@tzi.org> wrote:
> This can get way more complicated, even with 0xf7 “undefined” being around as well.
> 
> Exhibit 1:
> 
> https://github.com/svaarala/cbor-specs/blob/master/cbor-absent-tag.rst
> 
> But, yes, in CBOR we can always invent more values to express various forms of not-being-there, being-mostly-absent, keeping-a-position-occupied-but-not-taken, …
> (Harder to do in JSON.)  We even have NaN :-)

One of the goals of dCBOR is to encode semantically equivalent information the same way. So far I haven’t implemented `undefined` in my code, so it is rejected as not well-formed. I see `undefined` as a run-time Javascript artifact, and the only place I could see it being useful would be in, for example, reporting the result of remote execution of JavaScript code. This is such a domain-specific use case that I don’t see much point in dealing with it in dCBOR directly. Likewise with the “absent” tag you refer to above. I can see why all this might be necessary if absolute fidelity in round-tripping is a requirement, but this is a non-goal for dCBOR; indeed it *can’t* be a requirement as not all CBOR is valid dCBOR, and by extension not all JSON can be converted to dCBOR, so round-tripping is out, unless you’re also going to specify a compatible profile for dJSON.

~ Wolf