[Cbor] Re: draft-ietf-cbor-serialization update
Wolf McNally <wolf@wolfmcnally.com> Tue, 09 December 2025 08:50 UTC
Return-Path: <wolf@wolfmcnally.com>
X-Original-To: cbor@mail2.ietf.org
Delivered-To: cbor@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 9274997DD26C for <cbor@mail2.ietf.org>; Tue, 9 Dec 2025 00:50:04 -0800 (PST)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -1.898
X-Spam-Level:
X-Spam-Status: No, score=-1.898 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_NONE=0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=wolfmcnally-com.20230601.gappssmtp.com
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id bROmvhlZ5Q4r for <cbor@mail2.ietf.org>; Tue, 9 Dec 2025 00:50:03 -0800 (PST)
Received: from mail-dl1-x1234.google.com (mail-dl1-x1234.google.com [IPv6:2607:f8b0:4864:20::1234]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 7652597DD1A6 for <cbor@ietf.org>; Tue, 9 Dec 2025 00:49:34 -0800 (PST)
Received: by mail-dl1-x1234.google.com with SMTP id a92af1059eb24-11b6bc976d6so8076668c88.0 for <cbor@ietf.org>; Tue, 09 Dec 2025 00:49:34 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wolfmcnally-com.20230601.gappssmtp.com; s=20230601; t=1765270173; x=1765874973; darn=ietf.org; 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=5etF/4ZS1plvty6BTtbJG1LQTOCuOj9oHKTnDMMrFRM=; b=JsTz1CxvE61SVrtShMwtlU5JFXBzWx2rv/nz2wE7Iz1BkgeMc1Pr43Cv+hR2OKuLSg UCfgXIaVvRsIm3o5XxjRKMPm6nwIS+u12GTohO4XPY/QXjBdcCe3OEm84WBjpOCatrN5 sXJFUssBE1v5Mp2toYR4iCUQlLTOAJ1soXwnptfkwJjVo123Y5RkPUylUqt/tAwB2bug HkISej/mbPDTySYcBmf23MUPdaPfgu5LBkStJFwRTT00fGDevEtUOaW4EmRJC8Vl8ewm fYo7WGIDAhqJN2sCjoEWa2xzsKO4s9Dgq1izF+Hmcm8mtnJt3OtWheW3GjlXI0k+7mte mSCA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765270173; x=1765874973; h=to:references:message-id:content-transfer-encoding:cc:date :in-reply-to:from:subject:mime-version:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=5etF/4ZS1plvty6BTtbJG1LQTOCuOj9oHKTnDMMrFRM=; b=S//tP1jO5NQi7BMxTuRCPYkST0cv249PWWpe8A/rgNx7hx0szQ0KWlymRkZaAjXG+j DY6EOP6ku5YatRjkoomkFfuS4THjCEzOiHbNd1H+m8vqFhXw7NyxpGg1S7n3EZA5X8N6 LfW/4EWkHmU0w4EfbCsE5aZ0GgZOz5XBYXI9r0Liiu95mtRGhkpoSULHk8vnqy+Ax82a m5sAsAkVEt9Ue1iYxAMPQLfnQkQl07vTKw353l43zbiqwmZBM0BXds4LRW2qPN1oJF/o 0iBwF5y9llrJk6s7/fRUSzWxRn8Kge1Wj0PTWJM4JMcPlNRBziem1UXAeCrNXqxi/0cP jM1w==
X-Gm-Message-State: AOJu0YyjPxTeJYX0IDuWN+kEr/wa/L+8QWFTiUz0mO38JTiks8WVLq1a cTFL4iDMHIyccCxoz3BqdcDFs5cPcKtyTQo4+wQA2+lsHRcaXSWUdtJ7tHrSDZSbEBY=
X-Gm-Gg: ASbGncv7vMCzUMqQ6jyNdCDrUBPnhfR6IaoL0+kIohoN3gEyjk+6sNQq6RpMXz4Bxzs x6mIDzY6qju3CbzHxYyVYpzU7Tx4jEgZhNOffYNKudzcm+8uVRHgWl1IkztD90NKmp/hP0hibsW HJve15l8iqqfJiVJxBCu8Vck166PBFWen24sZ4IST7OqhPCI3CHlRydXtcV3aWz6o4uwHe47hng TIrLzZUbj+PDr0aH4naiwi5veCKC5pFpm9wvHj/NNE77/laktWs+x0kcpNSUaOTjwtPDAm5kHIl lVnYWKXRiFFyl2itK9U3ZZ8ysdWWnhpQpyHDbvTzg1jgJSf9xMFhaa9aSLATxvMP6LB3gnnPjZq z2F7BfZbBhqbQELkTLp1wcxasniQA3I96fyFe4h+ADwGtG+PUYzn1ce/sX4PDyRpq8duwea/YQM N2uP/431HIPLgUhY/IUmK4CEQwOzH5hXJ4v3HTiTI=
X-Google-Smtp-Source: AGHT+IFnJGkPoIX+/iTGcz6OtzPjcoyeCse0Mk1oG+836KEyTZD+7lTVHju8rHueltxSfj/xB6yEDw==
X-Received: by 2002:a05:7022:613:b0:119:e569:f84f with SMTP id a92af1059eb24-11f25160572mr560282c88.6.1765270173338; Tue, 09 Dec 2025 00:49:33 -0800 (PST)
Received: from smtpclient.apple ([91.196.220.195]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-11df76e2f3csm64354370c88.5.2025.12.09.00.49.32 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 09 Dec 2025 00:49:32 -0800 (PST)
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3864.200.81.1.6\))
From: Wolf McNally <wolf@wolfmcnally.com>
In-Reply-To: <6433ac0f-b04c-49b3-aa01-a9273d581415@gmail.com>
Date: Tue, 09 Dec 2025 00:49:21 -0800
Content-Transfer-Encoding: quoted-printable
Message-Id: <A4ED5BDA-142F-4972-A5D1-A5A656689B98@wolfmcnally.com>
References: <BEC29A66-3F64-4B03-9A8A-2C9B07B34815@island-resort.com> <7b080297-a3da-4c06-b567-c8fb0752df85@gmail.com> <20251207154817.1fbabdea@nuclight.lan> <6433ac0f-b04c-49b3-aa01-a9273d581415@gmail.com>
To: Anders Rundgren <anders.rundgren.net@gmail.com>
X-Mailer: Apple Mail (2.3864.200.81.1.6)
Message-ID-Hash: VAEWPEJYLSG2DCQ4HQT4TWL3SMWWNZ7O
X-Message-ID-Hash: VAEWPEJYLSG2DCQ4HQT4TWL3SMWWNZ7O
X-MailFrom: wolf@wolfmcnally.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-cbor.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: cbor@ietf.org, Christopher Allen <christophera@lifewithalacrity.com>
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [Cbor] Re: draft-ietf-cbor-serialization update
List-Id: "Concise Binary Object Representation (CBOR)" <cbor.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/cbor/Utlswcn4iWP5YvMH0WOcc4dUafk>
List-Archive: <https://mailarchive.ietf.org/arch/browse/cbor>
List-Help: <mailto:cbor-request@ietf.org?subject=help>
List-Owner: <mailto:cbor-owner@ietf.org>
List-Post: <mailto:cbor@ietf.org>
List-Subscribe: <mailto:cbor-join@ietf.org>
List-Unsubscribe: <mailto:cbor-leave@ietf.org>
Anders, > On Dec 7, 2025, at 9:32 PM, Anders Rundgren <anders.rundgren.net@gmail.com> wrote: > > Apparently CBOR::Core is as bad as it gets while dCBOR is pure gold although the implementations: > - Outlaw legitimate floating point values “Legitimate” is doing some heavy lifting here. NaNs are, as their name states, not numbers. They are not floating-point numbers. They are not any kind of numbers at all. They are IEEE-754 *values*, and that is all they are. More precisely, they are bitfield *structures* with undefined semantics. We fully support the single obviously useful NaN value, and even previously proposed a method using tags that lets non-trivial NaNs be represented as bstrs for those rare applications that need them, in a way that is both semantically precise and interoperable. If you’re referring to “outlawing” 2.0, we have the exact same semantic value 2, which we use instead. We’ve spent time explaining our reasons for this to you on-list, on in-person Zoom calls, and now in the draft appendices as well. If we did it the way you do it with CBOR::Core, then APIs, protocols, and engineers would all have to carry the additional cognitive burden of knowing which size bucket each typical numeric value must be carried around in (was that field i8 or i16?). If you enjoy hauling around that sort of representational trivia, you are welcome to it, but for someone who wishes to create a JSON killer, we don’t see how forcing that sort of burden on adopters helps your case. > - Lack public API documentation You say that like it’s a *bad* thing. There are several reference and third-party implementations of dCBOR now. Some of them are the dCBOR rules optionally added to existing implementations, and some of them are designed to specifically and exclusively support dCBOR. To try to impose a single API on every implementation of dCBOR regardless of platform would be a huge burden on implementers, especially when language idioms vary so widely. Our Swift dCBOR implementation feels natural to Swift programmers, and our Rust implementation feels natural to Rust programmers because we create APIs that are idiomatic for the language. You might find it an interesting exercise to create an implementation of CBOR::Core for Rust, including your specific API. I suspect you’ll discover that what you’ve specified, which is what works well for you in JavaScript and Java, would leave you fighting with the Rust type system and idioms, and would be very uncomfortable for experienced Rust engineers to use. > - Offer no backward compatibility mode dCBOR has no “modes” at all. It is a package of narrowing rules you can adopt or not adopt, with the sole caveat that if you do not adopt all of them, then you do not actually support dCBOR. Of course, since all dCBOR is valid CBOR, any CBOR decoder, even a highly constrained one, can decode dCBOR. And if a constrained decoder trusts the source, it can decode dCBOR as CBOR without checking all the dCBOR rules and without needing to claim full dCBOR conformance. ~ Wolf
- [Cbor] draft-ietf-cbor-serialization update Laurence Lundblade
- [Cbor] Re: draft-ietf-cbor-serialization update Wolf McNally
- [Cbor] Re: draft-ietf-cbor-serialization update Vadim Goncharov
- [Cbor] Re: draft-ietf-cbor-serialization update Anders Rundgren
- [Cbor] Re: draft-ietf-cbor-serialization update Laurence Lundblade
- [Cbor] Re: draft-ietf-cbor-serialization update Anders Rundgren
- [Cbor] Re: draft-ietf-cbor-serialization update Joe Hildebrand
- [Cbor] Re: draft-ietf-cbor-serialization update Wolf McNally
- [Cbor] Re: draft-ietf-cbor-serialization update Laurence Lundblade
- [Cbor] Re: draft-ietf-cbor-serialization update Wolf McNally
- [Cbor] Re: draft-ietf-cbor-serialization update Barry Leiba
- [Cbor] Re: [Ext] Re: draft-ietf-cbor-serializatio… Paul Hoffman
- [Cbor] Re: draft-ietf-cbor-serialization update Anders Rundgren
- [Cbor] Re: draft-ietf-cbor-serialization update Vadim Goncharov
- [Cbor] Re: draft-ietf-cbor-serialization update Anders Rundgren
- [Cbor] Re: draft-ietf-cbor-serialization update Anders Rundgren
- [Cbor] Re: draft-ietf-cbor-serialization update Laurence Lundblade
- [Cbor] Re: draft-ietf-cbor-serialization update Carsten Bormann
- [Cbor] Re: [Ext] Re: draft-ietf-cbor-serializatio… Paul Hoffman
- [Cbor] Re: [Ext] Re: draft-ietf-cbor-serializatio… Carsten Bormann
- [Cbor] Re: [Ext] Re: draft-ietf-cbor-serializatio… Paul Hoffman
- [Cbor] Re: [Ext] Re: draft-ietf-cbor-serializatio… Carsten Bormann
- [Cbor] Re: draft-ietf-cbor-serialization update Carsten Bormann
- [Cbor] Re: [Ext] Re: draft-ietf-cbor-serializatio… Vadim Goncharov
- [Cbor] Re: draft-ietf-cbor-serialization update Laurence Lundblade
- [Cbor] Re: draft-ietf-cbor-serialization update Carsten Bormann
- [Cbor] Re: draft-ietf-cbor-serialization update Laurence Lundblade
- [Cbor] Re: draft-ietf-cbor-serialization update Vadim Goncharov
- [Cbor] Re: draft-ietf-cbor-serialization update Vadim Goncharov
- [Cbor] Re: draft-ietf-cbor-serialization update Anders Rundgren
- [Cbor] Re: draft-ietf-cbor-serialization update Carsten Bormann
- [Cbor] Re: draft-ietf-cbor-serialization update Vadim Goncharov
- [Cbor] Re: draft-ietf-cbor-serialization update Laurence Lundblade
- [Cbor] Re: draft-ietf-cbor-serialization update Wolf McNally
- [Cbor] Re: draft-ietf-cbor-serialization update Wolf McNally
- [Cbor] Re: draft-ietf-cbor-serialization update Laurence Lundblade
- [Cbor] Re: draft-ietf-cbor-serialization update Laurence Lundblade
- [Cbor] Re: draft-ietf-cbor-serialization update Vadim Goncharov
- [Cbor] Re: draft-ietf-cbor-serialization update Wolf McNally
- [Cbor] Re: draft-ietf-cbor-serialization update Vadim Goncharov
- [Cbor] Re: [Ext] Re: draft-ietf-cbor-serializatio… Paul Hoffman
- [Cbor] Re: draft-ietf-cbor-serialization update Anders Rundgren
- [Cbor] Re: draft-ietf-cbor-serialization update Laurence Lundblade
- [Cbor] Re: draft-ietf-cbor-serialization update Anders Rundgren