httpbis-sfbis notes

Evert Pot <me@evertpot.com> Mon, 29 January 2024 16:53 UTC

Return-Path: <ietf-http-wg-request+bounce-httpbisa-archive-bis2juki=ietf.org@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id EBE22C14CF12 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Mon, 29 Jan 2024 08:53:20 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.755
X-Spam-Level:
X-Spam-Status: No, score=-7.755 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=evertpot.com header.b="Qqmvjhmi"; dkim=pass (2048-bit key) header.d=messagingengine.com header.b="fNST8IJR"
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 3q2GoXKx5C_I for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Mon, 29 Jan 2024 08:53:16 -0800 (PST)
Received: from lyra.w3.org (lyra.w3.org [128.30.52.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D2876C14F6E3 for <httpbisa-archive-bis2Juki@ietf.org>; Mon, 29 Jan 2024 08:53:15 -0800 (PST)
Received: from lists by lyra.w3.org with local (Exim 4.94.2) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1rUUsX-000fZI-3i for ietf-http-wg-dist@listhub.w3.org; Mon, 29 Jan 2024 16:53:01 +0000
Resent-Date: Mon, 29 Jan 2024 16:53:01 +0000
Resent-Message-Id: <E1rUUsX-000fZI-3i@lyra.w3.org>
Received: from titan.w3.org ([128.30.52.76]) by lyra.w3.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from <me@evertpot.com>) id 1rUUsV-000fXl-Kx for ietf-http-wg@listhub.w3.org; Mon, 29 Jan 2024 16:52:59 +0000
Received: from out2-smtp.messagingengine.com ([66.111.4.26]) by titan.w3.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from <me@evertpot.com>) id 1rUUsT-00AND6-AU for ietf-http-wg@w3.org; Mon, 29 Jan 2024 16:52:59 +0000
Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 8FDF75C00A1 for <ietf-http-wg@w3.org>; Mon, 29 Jan 2024 11:52:53 -0500 (EST)
Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Mon, 29 Jan 2024 11:52:53 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=evertpot.com; h= cc:content-type:content-type:date:date:from:from:in-reply-to :message-id:mime-version:reply-to:subject:subject:to:to; s=fm2; t=1706547173; x=1706633573; bh=gzFzd5RHwK6BG92bYtgnoMKejk2/wvpY TlS/tduP3mo=; b=QqmvjhmiZNUDe1YfrHkmpnTYzoBhWLC8T4lVZBhzlfLpgdAv p90KCAYc7W0mw8U5zoDLJo7PLyE2T0xXbzOW0HNlUDsyZLTsTfqrl+mB3+qWW9e9 NrC1KLpntyu328AoU02ix0+EcVusOrlvRvkM6/0Cm6YWfDlelkr38iBXDe+3r/2Z SQYV10j23CU/mwZKwPtKnacCU2omHVNT3K/Gge8FE8B5Rf60XQbCNAbq5WXWD7h5 YStcYNCy4hzzqntzFOMFRyq301wlSNNQb2eIClukdyZvBd99L3MoENBdUCx76gL2 NocSyv2tgJyGr1hMo6MY0ujPiHtkCiRJ959jIA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:message-id :mime-version:reply-to:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t= 1706547173; x=1706633573; bh=gzFzd5RHwK6BG92bYtgnoMKejk2/wvpYTlS /tduP3mo=; b=fNST8IJRqhvCkA35RC9r/5K3PMkxhtCEqLUOuKbI9k7l97QbbV/ UfOHhB2g8DQBkW0qVcaShe9bErYZxZULxKpdT5t7HqsULTsJpbQbw9kDNtoYaH34 0X5rYs6pevZYJKM3qSLm+5EeYY7Ty3m1igSNHTxidHVIBslqlux0hIzSQxLkmGKN LdSq27ceHHDqEo1bYV5k09DL6hldBJ9n9Tk7WAQdLqUhn0735mhUrg9JkAfnexjD DOFKagf0BdxMk6/1oYjk6zlsfQkvmGGxEjiY5vkr2wHeYFrqpBlJvCZ/knF8i+Ta ZE6o5hCN43Z6Zm5XDM+aUimNUNntyN2bbUQ==
X-ME-Sender: <xms:5de3ZcKc0rb8AU2N0vlGk5948ONIEk_jA7uS0MlPWmd3RwYHbZHG4g> <xme:5de3ZcImURcse5hjqyi6RCTTUHn5ezlg-iSWvEf52Ve7ayYJEAjd74iAR-uZZ8Uky ykXdobSbVEsEDqa>
X-ME-Received: <xmr:5de3ZcskmMQW9WGWhfvu7c3RPRwMlHAy-aHJWogPWEzzuVv0oNQGX_POcwwiBA1DqYye>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrfedtgedgkedvucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpegtkfffgggfvffhufesrgdtreertd dvjeenucfhrhhomhepgfhvvghrthcurfhothcuoehmvgesvghvvghrthhpohhtrdgtohhm qeenucggtffrrghtthgvrhhnpeegueehvdeikefhfeeugfdugeduudfggfdvueegiedtie etjedvudeuueeiheejteenucffohhmrghinhepnhhpmhhjshdrtghomhenucevlhhushht vghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmvgesvghvvghrthhpoh htrdgtohhm
X-ME-Proxy: <xmx:5de3ZZZ43Z-3F0IoKXuiuuuRFOvpwNxIVCJXL3H7xJBI0IiqCOcEWw> <xmx:5de3ZTbgLoYaUe0m5E7v1olUaFKRN670fcxZ_br8Vnl5b3dLufenRg> <xmx:5de3ZVCXFEYAkuIG_DLLKkUAX0EKByMkK0tVtMlIFa3rWGHGWtq-BA> <xmx:5de3Zd2vVvClCA58UB_AZWEyahKV6tm5Ojy4wgjwkl8jYDFuG_UckA>
Feedback-ID: i525c409a:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA for <ietf-http-wg@w3.org>; Mon, 29 Jan 2024 11:52:53 -0500 (EST)
Content-Type: multipart/alternative; boundary="------------qxWE4hRX1kbGOVSpK1n8fwdo"
Message-ID: <20c4637d-1aca-438d-b463-747f56b07fb3@evertpot.com>
Date: Mon, 29 Jan 2024 11:52:49 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "ietf-http-wg@w3.org" <ietf-http-wg@w3.org>
From: Evert Pot <me@evertpot.com>
Received-SPF: pass client-ip=66.111.4.26; envelope-from=me@evertpot.com; helo=out2-smtp.messagingengine.com
X-W3C-Hub-DKIM-Status: validation passed: (address=me@evertpot.com domain=evertpot.com), signature is good
X-W3C-Hub-DKIM-Status: validation passed: (address=me@evertpot.com domain=messagingengine.com), signature is good
X-W3C-Hub-Spam-Status: No, score=-4.8
X-W3C-Hub-Spam-Report: BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, W3C_AA=-1, W3C_WL=-1
X-W3C-Scan-Sig: titan.w3.org 1rUUsT-00AND6-AU b502523cd26dbea5c670ecad0364dc30
X-Original-To: ietf-http-wg@w3.org
Subject: httpbis-sfbis notes
Archived-At: <https://www.w3.org/mid/20c4637d-1aca-438d-b463-747f56b07fb3@evertpot.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/51750
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <https://www.w3.org/email/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

Hi!

Just wanted to share I updated my Javascript implementation to the 
latest Structured Fields draft:

https://www.npmjs.com/package/structured-headers
(released with an alpha tag until the RFC is published).

Bit annoying I called it 'structured headers', but I'm kind of stuck 
with that now. I've shared these in the past, but there's 2 slight 
incompatibilities with the spec that might be interesting for the authors.

 1. Javascript can't differentiate between |1.0| and |1|. As a result
    we're skipping the tests that require a serialiation output of |1.0|.
 2. Javascript rounds slightly different from the spec. The tests
    suggest that |0.0025| should round to the nearest event number
    (|0.002|), but Javascript rounds to |0.003|.

Just wanted to share this as a data point. It would be possible to wrap 
every number in a class that labels it as decimal or int, but this would 
reduce the ergonomics of the standard use-case quite a bit.

The library has quite a bit of downloads (400K / week), which surprised 
me. So if people will be reaching to this when they want to 
serialize/parse Structured headers I would like to be a good citizen, so 
I'm open for any feedback.

The one thing I will change before a 2.0 release is that I intend to 
ship a `Dictionary` wrapper. v1 returns a deep structure with simple 
arrays and Maps, and I think it's a bit frustrating to work with for 
simple use-cases.

Evert