GNU bug report logs - #79668
30.1; json-serialize rejects strings as object keys

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Reported by: Nicolas Martyanoff <nicolas@HIDDEN>; dated Tue, 21 Oct 2025 14:37:03 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 25 Nov 2025 20:31:17 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Nov 25 15:31:16 2025
Received: from localhost ([127.0.0.1]:42285 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vNzgx-0004Se-RR
	for submit <at> debbugs.gnu.org; Tue, 25 Nov 2025 15:31:16 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:42616)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vMj6K-00034Y-FS
 for 79668 <at> debbugs.gnu.org; Sat, 22 Nov 2025 03:36:13 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1vMj5n-0002ec-4p; Sat, 22 Nov 2025 03:35:39 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=pyWelBIgh7L/1ly+0a6IqtXI+KkrM415bImtLnatVX8=; b=BfYyg6vGmhOSO7S1VF2U
 Ll7uH9u9HGEXe+1OzwEiIwZXhwe1yZ4rCM0OtqzF7FRGCI3D+M8cHCwDgamXLVv5DiTKFCij2m4hW
 4Xyzf6BjqFHuhBUg/JXi6Z4xO5qEA+ffwxM3S12sR4HKVrZjRMmx8obEuTS483g3c8tASSBQf1b7V
 J0D8Jj16TpNBORZMn/zwVReveyeysujMwF5sa1ly+lUOX475amazPtEbjug2XOSvmXfQN2dJ6z2nR
 VqATK2CKrI0izg0Sgr/TUSII518YmNyvAK3Go5+AdjE5k/JJh/71nSPBLqdzWpNzxrX15iL+rVsrZ
 UQeEzm3fUueSFw==;
Date: Sat, 22 Nov 2025 10:35:25 +0200
Message-Id: <86h5umh3ci.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Robert Pluim <rpluim@HIDDEN>
In-Reply-To: <87qztru4ci.fsf@HIDDEN> (message from Robert Pluim on Fri, 21
 Nov 2025 10:23:09 +0100)
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
References: <87jz0oju7l.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
 <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
 <875xc7fgql.fsf@HIDDEN>
 <974738F2-77F1-4EDB-B667-62DFA2AD1900@HIDDEN>
 <87tszrdjh9.fsf@HIDDEN> <86tsz47pzv.fsf@HIDDEN>
 <D6CE90DE-D8A4-4EE0-9D3B-A4CEA71094DE@HIDDEN>
 <87ldke8aot.fsf@HIDDEN> <86ecq63xkt.fsf@HIDDEN>
 <87qzu613u9.fsf@HIDDEN> <868qge3wh1.fsf@HIDDEN>
 <87ms4u11sw.fsf@HIDDEN> <867bvy3rj2.fsf@HIDDEN>
 <87h5v197j1.fsf@HIDDEN>
 <44523964-CCD9-4949-804C-BF2BBEE4827C@HIDDEN>
 <864iqvo3p1.fsf@HIDDEN> <87bjkwvhh8.fsf@HIDDEN>
 <863468iob7.fsf@HIDDEN> <87qztru4ci.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79668
Cc: p.stephani2@HIDDEN, mattias.engdegard@HIDDEN, nicolas@HIDDEN,
 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Robert Pluim <rpluim@HIDDEN>
> Cc: mattias.engdegard@HIDDEN,  nicolas@HIDDEN,  p.stephani2@HIDDEN,
>   79668 <at> debbugs.gnu.org
> Date: Fri, 21 Nov 2025 10:23:09 +0100
> 
> >>>>> On Thu, 20 Nov 2025 19:52:44 +0200, Eli Zaretskii <eliz@HIDDEN> said:
> 
>     >> But it seems that we need to fix the other perceived problems with
>     >> `json-serialize' before that can happen.
> 
>     Eli> Which problems are those?
> 
> The fact that thereʼs no way to control the treatment of duplicate
> keys, and that it ends up interning a bunch of symbols.

If someone decides to use strings as keys, they should be aware of
these consequences, shouldn't they?  We could allow this as an opt-in
feature, explaining in the doc string of the option what are the
possible downsides.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 25 Nov 2025 20:21:22 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Nov 25 15:21:22 2025
Received: from localhost ([127.0.0.1]:41794 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vNzXO-0000tL-8S
	for submit <at> debbugs.gnu.org; Tue, 25 Nov 2025 15:21:22 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:40626)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vMqna-00022z-DU
 for 79668 <at> debbugs.gnu.org; Sat, 22 Nov 2025 11:49:23 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1vMqn4-0003OC-36; Sat, 22 Nov 2025 11:48:50 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=4jtufuNgOEGoyG0nW7P/lADrSZPObsHz7aVLxVeKOuE=; b=JAJPom4tNEygEYbivpad
 biaMFZBiaZX0STq8SDVsQI6LVPxi9U3JrkLaQfeRnzmy5H63RcTFGpcSGFeBWPNcD4Gn2/46+hI4W
 K2oQOwvl0QduvVGly/r4j1o4MpISf8/rhJdQ0Qq0lJWQcrmDA/o6CHHjLbV6Wkv+PaJJSktvWXZJp
 McJcE+YGw1lh+yFA9QbuxHZDCfWUybeGjmd3lXSJuKUTECE9OEUnFUG/aLMLJedvw9FToEV+GlnPl
 aRaJSqbmJV17T7LFbdT4R8p9VT9Luj6WrAUjEX9TPYTUZgXB5pXHmrCDx7VPhnbxqw11ObcqbDUIr
 I0BMu+1aQUOlqA==;
Date: Sat, 22 Nov 2025 18:48:38 +0200
Message-Id: <86wm3idndl.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Nicolas Martyanoff <nicolas@HIDDEN>
In-Reply-To: <87o6ouvx14.fsf@HIDDEN> (message from Nicolas
 Martyanoff on Sat, 22 Nov 2025 17:42:47 +0100)
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
References: <87jz0oju7l.fsf@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
 <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
 <875xc7fgql.fsf@HIDDEN>
 <974738F2-77F1-4EDB-B667-62DFA2AD1900@HIDDEN>
 <87tszrdjh9.fsf@HIDDEN> <86tsz47pzv.fsf@HIDDEN>
 <D6CE90DE-D8A4-4EE0-9D3B-A4CEA71094DE@HIDDEN>
 <87ldke8aot.fsf@HIDDEN> <86ecq63xkt.fsf@HIDDEN>
 <87qzu613u9.fsf@HIDDEN> <868qge3wh1.fsf@HIDDEN>
 <87ms4u11sw.fsf@HIDDEN> <867bvy3rj2.fsf@HIDDEN>
 <87h5v197j1.fsf@HIDDEN>
 <44523964-CCD9-4949-804C-BF2BBEE4827C@HIDDEN> <864iqvo3p1.fsf@HIDDEN>
 <87bjkwvhh8.fsf@HIDDEN> <863468iob7.fsf@HIDDEN>
 <87qztru4ci.fsf@HIDDEN> <86h5umh3ci.fsf@HIDDEN>
 <87o6ouvx14.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79668
Cc: p.stephani2@HIDDEN, rpluim@HIDDEN, 79668 <at> debbugs.gnu.org,
 mattias.engdegard@HIDDEN, nicolas@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Nicolas Martyanoff <nicolas@HIDDEN>
> Cc: Robert Pluim <rpluim@HIDDEN>,  mattias.engdegard@HIDDEN,
>   nicolas@HIDDEN,  p.stephani2@HIDDEN,  79668 <at> debbugs.gnu.org
> Date: Sat, 22 Nov 2025 17:42:47 +0100
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> >> From: Robert Pluim <rpluim@HIDDEN>
> >> Cc: mattias.engdegard@HIDDEN,  nicolas@HIDDEN,  p.stephani2@HIDDEN,
> >>   79668 <at> debbugs.gnu.org
> >> Date: Fri, 21 Nov 2025 10:23:09 +0100
> >> 
> >> >>>>> On Thu, 20 Nov 2025 19:52:44 +0200, Eli Zaretskii <eliz@HIDDEN> said:
> >> 
> >>     >> But it seems that we need to fix the other perceived problems with
> >>     >> `json-serialize' before that can happen.
> >> 
> >>     Eli> Which problems are those?
> >> 
> >> The fact that thereʼs no way to control the treatment of duplicate
> >> keys, and that it ends up interning a bunch of symbols.
> >
> > If someone decides to use strings as keys, they should be aware of
> > these consequences, shouldn't they?  We could allow this as an opt-in
> > feature, explaining in the doc string of the option what are the
> > possible downsides.
> 
> So you would be ok with the function supporting strings, with using
> strings leading to duplicate key detection being skipped? I believe that
> would be perfectly reasonable.

That's my opinion, yes, provided that this is by default OFF, and we
have a variable allowing it whose doc string explains the potential
problems.  But I'd like to hear from others as well.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 25 Nov 2025 20:21:22 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Nov 25 15:21:22 2025
Received: from localhost ([127.0.0.1]:41792 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vNzXN-0000tE-Qi
	for submit <at> debbugs.gnu.org; Tue, 25 Nov 2025 15:21:22 -0500
Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]:47475)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <nicolas@HIDDEN>) id 1vMqhN-0001W9-CC
 for 79668 <at> debbugs.gnu.org; Sat, 22 Nov 2025 11:42:58 -0500
Received: by mail-wr1-x431.google.com with SMTP id
 ffacd0b85a97d-42b2dc17965so2858336f8f.3
 for <79668 <at> debbugs.gnu.org>; Sat, 22 Nov 2025 08:42:57 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=n16f-net.20230601.gappssmtp.com; s=20230601; t=1763829769; x=1764434569;
 darn=debbugs.gnu.org; 
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=BKJb+DUZUuzGLvLI5l0l1WSuqiJwXufmhyX7TeqvPug=;
 b=Qe8DHzN+APlGJay2fOymOuaFbDj7Ml97Zj4RGuuNLIC8UV1zMvaev0b6Ntgl+2pj24
 pvppztx88LhRZTBztCL+anGDsGlnBdyh0IWrYEWRcKnky0QpmRSCIiVGQhvI9hSV7lFs
 wZWaKoPLOmhcES2py3U5L4aOgNYtwc4de/NIr6/AIArh98AfhVvZiviHf+rWlfewBYE1
 7LRqLkQyjqw3XCJHEMf13zU2GF587qipFqqACHSwj26uWYJjv8Po/Giut5xrqU8jEF1I
 zUsekED1ZEQJ/qXyi8oHr5/UOk8sTjq+XST2rEUm7nPb2MHIAqFc3n8bEq6mhpeHUiq8
 vsbQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1763829769; x=1764434569;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-gg
 :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
 bh=BKJb+DUZUuzGLvLI5l0l1WSuqiJwXufmhyX7TeqvPug=;
 b=TB8Z6582glNEM7OJMVcIgHV/HskVnv3ZryIre32WmKR4u1WISqNvUeHFQwPRigfnwM
 v2YS6PqqkXgKkxiQnywESB3wrzAasiKGnS42x0SZqx5C2/gcp9MvAprdBfetfUr//dp0
 ud/HhSe/x3NUFC79dcDaAoFzjXJZ9Q8Fj9k6CNMrlgfrE102leo5M9WIQ5YlsFurKXgl
 XUnVSkAzUkblReJU+PVqlMOdF57wSLk4hfQaH7pgHdQ1zDYYW8xYjr1q5p1wsfQDWLLC
 G6nMQ0R2LDeGxySzU0xyICKXSpwrCj29YDRv5ApBMlcUbzKx1wugBXzyook3xTdFntAf
 Z9Yw==
X-Forwarded-Encrypted: i=1;
 AJvYcCU2KxpfGPDns/6o1ZCr3E/H3ugu20bOSAUJQg5f63fRozKN18rHJa3wVNN9IkkNtkG2xbefnw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwGX0jgBBcWZbSKqceRznoGQ57vtpZvYboJFB7D7rJEpuKG6ePD
 L3cU/Emv/tQ2Gxmrf1PQ8lwxandIwYm3FZAwT7n9PmHnRaCigP2uVi6KdpYA89zQ02r1bgFRHF8
 IiC2KzdWT8A==
X-Gm-Gg: ASbGncuWZHbuz1Ea+4UeCOLIz6z4W8MiW+u+AOoUMqYC4vp0q8nRG/vr+uNj/WnSxnQ
 +l2QFGasWx942GFODRfYGsp96IwzPIYcBZkrFqeHVlLE/fNeSqjtLKPVIXnbn6kPCQ5Mwp9wIYe
 /N2f3hgwrmrhnUT3ynUf5q19Li/+qXh2X2aXKWycRWbGoK1Xpjmc1RCs2OMIylRGZWdAB/pKE6m
 vG5Nw+hBpXMHqWQeWhrX+Mdifs0RA14gnLWlq4B3p10DvB24PjAvLl8+QFm500XiSsdxtK7WqOd
 NFpo1yNT+bIdrSwRlC0lw+SvUcO1qYl+Qgmjl852CB1SFu7m+qpPW1KcmIjjkt8cG2KSG6c5U8T
 JOTuJpd3gftexypyRFuBwPa5ckEdS96DNqH3KTKAIXm8dZYinA9mTk9wuHp1OjltLKrIsqKFehO
 ydzu/SOg3GqvdXBaXwUoBP5xyUhHtetLBJ9kPO8GbVXXKNa8OGxFER8uj0aVIqUvmU
X-Google-Smtp-Source: AGHT+IEVXT519AXufLjdLlOl23HHGIfbEW6W+IyV9CBzlSxnMlBcCpMM1LpJ4U0mEX0wWxI2+uNEbw==
X-Received: by 2002:a05:6000:2585:b0:427:7ac:5287 with SMTP id
 ffacd0b85a97d-42cc1d0cd3fmr6533478f8f.34.1763829768746; 
 Sat, 22 Nov 2025 08:42:48 -0800 (PST)
Received: from valhala (2a01cb040ec9e60097860c4c71a390d6.ipv6.abo.wanadoo.fr.
 [2a01:cb04:ec9:e600:9786:c4c:71a3:90d6])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-42cb7fb9022sm17599627f8f.36.2025.11.22.08.42.47
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 22 Nov 2025 08:42:47 -0800 (PST)
From: Nicolas Martyanoff <nicolas@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
In-Reply-To: <86h5umh3ci.fsf@HIDDEN> (Eli Zaretskii's message of "Sat, 22 Nov
 2025 10:35:25 +0200")
References: <87jz0oju7l.fsf@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
 <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
 <875xc7fgql.fsf@HIDDEN>
 <974738F2-77F1-4EDB-B667-62DFA2AD1900@HIDDEN>
 <87tszrdjh9.fsf@HIDDEN> <86tsz47pzv.fsf@HIDDEN>
 <D6CE90DE-D8A4-4EE0-9D3B-A4CEA71094DE@HIDDEN>
 <87ldke8aot.fsf@HIDDEN> <86ecq63xkt.fsf@HIDDEN>
 <87qzu613u9.fsf@HIDDEN> <868qge3wh1.fsf@HIDDEN>
 <87ms4u11sw.fsf@HIDDEN> <867bvy3rj2.fsf@HIDDEN>
 <87h5v197j1.fsf@HIDDEN>
 <44523964-CCD9-4949-804C-BF2BBEE4827C@HIDDEN> <864iqvo3p1.fsf@HIDDEN>
 <87bjkwvhh8.fsf@HIDDEN> <863468iob7.fsf@HIDDEN>
 <87qztru4ci.fsf@HIDDEN> <86h5umh3ci.fsf@HIDDEN>
Date: Sat, 22 Nov 2025 17:42:47 +0100
Message-ID: <87o6ouvx14.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79668
Cc: p.stephani2@HIDDEN, Robert Pluim <rpluim@HIDDEN>,
 79668 <at> debbugs.gnu.org, mattias.engdegard@HIDDEN, nicolas@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

>> From: Robert Pluim <rpluim@HIDDEN>
>> Cc: mattias.engdegard@HIDDEN,  nicolas@HIDDEN,  p.stephani2@HIDDEN=
om,
>>   79668 <at> debbugs.gnu.org
>> Date: Fri, 21 Nov 2025 10:23:09 +0100
>>=20
>> >>>>> On Thu, 20 Nov 2025 19:52:44 +0200, Eli Zaretskii <eliz@HIDDEN> s=
aid:
>>=20
>>     >> But it seems that we need to fix the other perceived problems with
>>     >> `json-serialize' before that can happen.
>>=20
>>     Eli> Which problems are those?
>>=20
>> The fact that there=CA=BCs no way to control the treatment of duplicate
>> keys, and that it ends up interning a bunch of symbols.
>
> If someone decides to use strings as keys, they should be aware of
> these consequences, shouldn't they?  We could allow this as an opt-in
> feature, explaining in the doc string of the option what are the
> possible downsides.

So you would be ok with the function supporting strings, with using
strings leading to duplicate key detection being skipped? I believe that
would be perfectly reasonable.

--=20
Nicolas Martyanoff
https://n16f.net
nicolas@HIDDEN




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 21 Nov 2025 09:23:18 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Nov 21 04:23:18 2025
Received: from localhost ([127.0.0.1]:53705 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vMNMM-0004QP-Bg
	for submit <at> debbugs.gnu.org; Fri, 21 Nov 2025 04:23:18 -0500
Received: from mail-wr1-x429.google.com ([2a00:1450:4864:20::429]:58873)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <rpluim@HIDDEN>) id 1vMNMK-0004Pj-T1
 for 79668 <at> debbugs.gnu.org; Fri, 21 Nov 2025 04:23:17 -0500
Received: by mail-wr1-x429.google.com with SMTP id
 ffacd0b85a97d-42b3c965df5so956284f8f.1
 for <79668 <at> debbugs.gnu.org>; Fri, 21 Nov 2025 01:23:16 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1763716991; x=1764321791; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:message-id:date:references
 :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id
 :reply-to; bh=GqZ76oH/IYtqS9S2g1+BUI2TED3jFiWzR7qESsA4OY4=;
 b=MSlq3vAF0ROyxmEhMXJxb5jE7sdbivc22FB6xg4qciJv+NUxGIpKL0M+T9CdXDm/A2
 tDD779c4LJPaZykGSxMwQDTwYcsjn9N+NPcGjbKgBLVIozNKvJ/y2z7np2Ik5CFE7/Ah
 nk0Yz8RS6rMkOrc0aZbBoCgv685S+6ioL0PVd0f/Ru8n2j1TB49P6j+Z4IPhACIEZu2W
 UEuMgNJHWfcxPYZVCGAiDHajbg717wof2sB+Jg7fHrquRaS9G6UfoFWzv6lhzclIgFtg
 4tI7yr08Yu5U/ZbqwstICrmWSbEFSvNqcs9kE2Px8P60GOkMCvszN5E2c3eJ4lhmIKob
 NajQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1763716991; x=1764321791;
 h=content-transfer-encoding:mime-version:message-id:date:references
 :in-reply-to:subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to
 :cc:subject:date:message-id:reply-to;
 bh=GqZ76oH/IYtqS9S2g1+BUI2TED3jFiWzR7qESsA4OY4=;
 b=D9j5Mj+bkoe1QwhQojGAtBCCNlJ6q4oQ8E4zRpoitwweF449NeuCNGb1VoWkJnN/Sr
 GnSh7ipin1DzpcoyhgTvIj2KUDbqt3L1/6af/LDN0LTQAxxHbaMLgvMf+OyAH1H6sJy+
 swk2sSmpVBWKuMA1bIEodHRkxpEBjRLJXnEeL03sooX7iWrWEQR3J1vTnZpRtG4Tcztk
 pMIY2EfsKsrMiNHj9hvkTSjUEnTSm0KTIiNoRWy9A8Wo3fYDB7GgOZ7rgZE4Hr7mm+GG
 JYa732qBHdFp/7kiuaRsV0JXeNMtrdAcSy5Wf8yGeIKGQbaQqrPP8+WLsf2Hdk5c5T9i
 L5Lw==
X-Forwarded-Encrypted: i=1;
 AJvYcCXL/dMz0q1PaTWJfnsazGBSzAjkSneVehOP6kHubSW+Fhs1hsodN83f/2r8ennfdB29lrm4Bg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yw6VCW87euhhZA8MXHqJC02CJrXiS6Y8tPgasQPgVRorVmDTx+e
 Hx+q6B5+eQYq8xSm5BDagHb3awxPL6UXmcqP1I9Ml9Rn3wW0eO0QEHAw1CCnqYXt
X-Gm-Gg: ASbGncv/bmFavYbcS+NGrokQVUfqiD/fruRAaJjTBn0vP/wGSK6ZO8qLVy1XS7Ccqrg
 r4UCGJC2/0MVKz+ABfVt7TFqVpMnS+D4ENrqwHwuebNKhNaPkO8maDseZQW8AwuJ1MRGefkXqmE
 L7tFJiLmF494Paho8ZdIt1kM8FLSQtk0hDT9P+NiJzKYY0SOrip6sXmNjmmMsMe9k/kRZUnQYYi
 zILta+81dBFDM6YyYdOA6DLd/jjGTDmqlKzOiWvNa4+c9cmtWMSQ0wWWL2i86wi4fMH1OCVm2RK
 80gdOb9w0FZ/9cvoajMBzPGvEwknSLQVZ31LfqalsFI3nH9yfTKio/N1EHSBAppL7XCfnmLqskf
 r5ZXeYmoVtMHimstNAlaVoGrYH6L8VOTbTNzQar/3EGQqHbXAE0pzcmgjXG3lVsMl2s1My4cK
X-Google-Smtp-Source: AGHT+IFXnqWrB4hnMeUW/3FFTLZUKAOCh05uuqch7+ivVsXWDHsgCVGnr6y4dCJmN1gEP1L4z+VKWA==
X-Received: by 2002:a5d:5850:0:b0:429:d350:8012 with SMTP id
 ffacd0b85a97d-42cc1ac80d3mr1361280f8f.8.1763716990516; 
 Fri, 21 Nov 2025 01:23:10 -0800 (PST)
Received: from rltb ([2a01:e0a:3f3:fb50:bb43:df9:9151:8d71])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-42cb7fd9b45sm9782139f8f.43.2025.11.21.01.23.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 21 Nov 2025 01:23:10 -0800 (PST)
From: Robert Pluim <rpluim@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
In-Reply-To: <863468iob7.fsf@HIDDEN>
References: <87jz0oju7l.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
 <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
 <875xc7fgql.fsf@HIDDEN>
 <974738F2-77F1-4EDB-B667-62DFA2AD1900@HIDDEN>
 <87tszrdjh9.fsf@HIDDEN> <86tsz47pzv.fsf@HIDDEN>
 <D6CE90DE-D8A4-4EE0-9D3B-A4CEA71094DE@HIDDEN>
 <87ldke8aot.fsf@HIDDEN> <86ecq63xkt.fsf@HIDDEN>
 <87qzu613u9.fsf@HIDDEN> <868qge3wh1.fsf@HIDDEN>
 <87ms4u11sw.fsf@HIDDEN> <867bvy3rj2.fsf@HIDDEN>
 <87h5v197j1.fsf@HIDDEN>
 <44523964-CCD9-4949-804C-BF2BBEE4827C@HIDDEN>
 <864iqvo3p1.fsf@HIDDEN> <87bjkwvhh8.fsf@HIDDEN>
 <863468iob7.fsf@HIDDEN>
Date: Fri, 21 Nov 2025 10:23:09 +0100
Message-ID: <87qztru4ci.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79668
Cc: p.stephani2@HIDDEN, mattias.engdegard@HIDDEN, nicolas@HIDDEN,
 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

>>>>> On Thu, 20 Nov 2025 19:52:44 +0200, Eli Zaretskii <eliz@HIDDEN> said:

    >> But it seems that we need to fix the other perceived problems with
    >> `json-serialize' before that can happen.

    Eli> Which problems are those?

The fact that there=CA=BCs no way to control the treatment of duplicate
keys, and that it ends up interning a bunch of symbols.

Robert
--=20




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 20 Nov 2025 17:52:56 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 20 12:52:56 2025
Received: from localhost ([127.0.0.1]:49633 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vM8pz-0001GD-LO
	for submit <at> debbugs.gnu.org; Thu, 20 Nov 2025 12:52:55 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:55944)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vM8px-0001Fa-0L
 for 79668 <at> debbugs.gnu.org; Thu, 20 Nov 2025 12:52:53 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1vM8pr-0005Ym-HU; Thu, 20 Nov 2025 12:52:47 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=dYTGdp2PE+2f6ltjrmGpuvcgVyArrMn0fQM7M5LDXYw=; b=nwo9Wd0NhMs298kyEZeW
 TfGq1/Lrd58bPqkJ2L9RdxuVdQycDGd8S3GyD6R9Co4PeuJhAYdtsk9B4TyTjqnERSN9b9QQ5dlfl
 rxgOdKy7tF0zC/+WxZe8oyD9B6dWaJ7DzoVOLAoHJi2KeBlxSMAlbg375ZP+U7Q/zNKctNd6as+9/
 3b+2H3vX+pMSSn1XL6xOZWUxehlsCBvy5ExILSu3rWGx6b6HWUUVxmTd5da8cmrj2cvbY5qJyL7Ui
 02CL19FSlCys/erQQje9fuK90gbayo/npaCskHGtgQ5So3ND6BgKQV5EPowJ3wkvD5vM/x96e0sqZ
 HeQK6ltomvHP8Q==;
Date: Thu, 20 Nov 2025 19:52:44 +0200
Message-Id: <863468iob7.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Robert Pluim <rpluim@HIDDEN>
In-Reply-To: <87bjkwvhh8.fsf@HIDDEN> (message from Robert Pluim on Thu, 20
 Nov 2025 16:41:55 +0100)
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
References: <87jz0oju7l.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
 <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
 <875xc7fgql.fsf@HIDDEN>
 <974738F2-77F1-4EDB-B667-62DFA2AD1900@HIDDEN>
 <87tszrdjh9.fsf@HIDDEN> <86tsz47pzv.fsf@HIDDEN>
 <D6CE90DE-D8A4-4EE0-9D3B-A4CEA71094DE@HIDDEN>
 <87ldke8aot.fsf@HIDDEN> <86ecq63xkt.fsf@HIDDEN>
 <87qzu613u9.fsf@HIDDEN> <868qge3wh1.fsf@HIDDEN>
 <87ms4u11sw.fsf@HIDDEN> <867bvy3rj2.fsf@HIDDEN>
 <87h5v197j1.fsf@HIDDEN>
 <44523964-CCD9-4949-804C-BF2BBEE4827C@HIDDEN>
 <864iqvo3p1.fsf@HIDDEN> <87bjkwvhh8.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79668
Cc: p.stephani2@HIDDEN, mattias.engdegard@HIDDEN, nicolas@HIDDEN,
 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Robert Pluim <rpluim@HIDDEN>
> Cc: Mattias Engdegård <mattias.engdegard@HIDDEN>,
>   nicolas@HIDDEN,
>   p.stephani2@HIDDEN,  79668 <at> debbugs.gnu.org
> Date: Thu, 20 Nov 2025 16:41:55 +0100
> 
> >>>>> On Sat, 15 Nov 2025 14:55:38 +0200, Eli Zaretskii <eliz@HIDDEN> said:
> 
>     >> From: Mattias Engdegård <mattias.engdegard@HIDDEN>
>     >> Date: Sat, 15 Nov 2025 13:39:43 +0100
>     >> Cc: Eli Zaretskii <eliz@HIDDEN>,
>     >> Nicolas Martyanoff <nicolas@HIDDEN>,
>     >> p.stephani2@HIDDEN,
>     >> 79668 <at> debbugs.gnu.org
>     >> 
>     >> > Or we could intern `json-serialize' symbols using a non-default
>     >> > obarray. We then get to decide whether an existing symbol gets
>     >> > overridden or not, and using strings becomes easy. Obarrays arenʼt
>     >> > hash tables, but realistically how many symbols are we talking about
>     >> > in a single call to `json-serialize'?
>     >> 
>     >> Frankly, I don't see what that would accomplish.
> 
>     Eli> It will allow us to support strings as keys, which is what the OP
>     Eli> requested.  Or what am I missing?
> 
> That was the original request, for which I proposed a 2-line patch 4
> weeks ago.
> 
> But it seems that we need to fix the other perceived problems with
> `json-serialize' before that can happen.

Which problems are those?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 20 Nov 2025 15:42:06 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Nov 20 10:42:06 2025
Received: from localhost ([127.0.0.1]:48903 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vM6nN-000743-Uw
	for submit <at> debbugs.gnu.org; Thu, 20 Nov 2025 10:42:06 -0500
Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]:59521)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <rpluim@HIDDEN>) id 1vM6nL-00073F-Ha
 for 79668 <at> debbugs.gnu.org; Thu, 20 Nov 2025 10:42:04 -0500
Received: by mail-wr1-x42b.google.com with SMTP id
 ffacd0b85a97d-42bb288c1bfso690034f8f.2
 for <79668 <at> debbugs.gnu.org>; Thu, 20 Nov 2025 07:42:03 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1763653317; x=1764258117; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:message-id:date:references
 :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id
 :reply-to; bh=6vXbT+BO4RKm4i6BBLPzVDWi7z29t+vS/HvYAvAIiww=;
 b=Zl7K44O/EYIjpnD6HdSrVXd27pa7hVEKiunk9eonDB/e0LwblMnDeLT8ZsKcnurbou
 1/P/8dVqhQW+R+7Zvunal/WJdVchYi68q0TtQF3p+99c1vrhX3zNUJNUeNr4hFcPp99A
 cG/oGt64ipRdrtUs47w4lj+v+BGT/nQF8BS335YFmlG6uLgnUf9OZtSAShYClWDRwJdC
 1aKJ/FCj0px+fYwmUMisA5kcprIYhVuNQGtGEi2FfgTvLCVCqG41pFBR3GtScXWo9jQ3
 7+Bb8HKufweS9YYGD2gvS5SLr7iZ2pN9J0yJQzy3irM3zcuivd9WHHy4k7vUCRbBEOJg
 UrjA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1763653317; x=1764258117;
 h=content-transfer-encoding:mime-version:message-id:date:references
 :in-reply-to:subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to
 :cc:subject:date:message-id:reply-to;
 bh=6vXbT+BO4RKm4i6BBLPzVDWi7z29t+vS/HvYAvAIiww=;
 b=lCKlv3Liofgg0l5XHEI5mMTp0XHDBczaGHesJSYFsBWeQHi0CTBHG2oxZXoJYhroe/
 tG+OSxG48pZn9Q/+hpRUGuTdO6heJF7G40ISlBJqGYR7DBcl3uJBbEkw8AO/YA8pVync
 7ygWjDPjupvd0lWyPRjN0CInp/hn2mIfAcsNrROsSW5jvOfiH9SRFv3N/8r9vdQGTqTH
 zWb97WhYqlFwZec+7hmjlCTs6w320mvOKiaFd6vVQV9GCcAobMk7V3akD4h92fQDShpG
 8JFh3qFPr0FOmNk4KjQklf7tTq/TyDthtn/2bIIDhxoLMb0Y0EaGoM8EDYLWFjM2D+xb
 u/dg==
X-Forwarded-Encrypted: i=1;
 AJvYcCXLqPlAHdguqVzr4zhaQDd1P09xnLJGLBwUVjmnd4g7ActWaCC1RvuML9sS6Mmxjl61oRcK3g==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzEDZan4s/ENUmBV6WD/DLcuyX1q5NVSC+5gicl28d9BhLbAtfN
 EnQye42PxB2dBPFsRZDwnVeBn1V4Nz/BdtnfPIOHtme0wNLnHNwgRvEY+qct7Rlj
X-Gm-Gg: ASbGncs3koKT3BGOUu8PrIBbk51KwHWIKeh9+raqPmS0qkKPZuAmX9SJM4GmAlQp50Z
 Mf5IfwueNGOZPuzHlZDlfGKZSTsL4U8O0yp4jYz1aCCwT5ElNgSr85R0yygmCSrr6Bqu0U68mHQ
 AmSAHa578ktJjhjRrI2Gpxp2pn0MXRKwOQBP8JJA9o6TyeMVpUeh3icM+P1M+5zg7pFSzAx6z3w
 udG3nGTihuZ+vIEafAYOYF+aUDcAHUiwjI76hUXnz8dv+m+2mNWC71oXAU9JwCBs8B2UhMvUZg5
 ZRBMcTn5D8xBjfiKUQY/Ppeew/CKc51Qfb+7Y8z5+CvCgnkszRMt5leVWAmQ6GMXVruLhoh2U9G
 W+lod8tIWMMY8NVlHw3QAvmHgsl/54+qiEThRQxVQxIskpqY9XjqM2icnsR+DOxV1MIBfUt+C
X-Google-Smtp-Source: AGHT+IGlKUsjpUAZo0vFkhZREDJUQr3LwbXC11CKGmfGuLGRTkxt/lcq+VfJ9iWRgV4r7SR+X9wW6A==
X-Received: by 2002:a05:6000:2309:b0:3ec:ea73:a91e with SMTP id
 ffacd0b85a97d-42cb9a1f3a6mr3873438f8f.12.1763653316805; 
 Thu, 20 Nov 2025 07:41:56 -0800 (PST)
Received: from rltb ([2a01:e0a:3f3:fb50:bb43:df9:9151:8d71])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-42cb7fb8a29sm6053190f8f.30.2025.11.20.07.41.56
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 20 Nov 2025 07:41:56 -0800 (PST)
From: Robert Pluim <rpluim@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
In-Reply-To: <864iqvo3p1.fsf@HIDDEN>
References: <87jz0oju7l.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
 <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
 <875xc7fgql.fsf@HIDDEN>
 <974738F2-77F1-4EDB-B667-62DFA2AD1900@HIDDEN>
 <87tszrdjh9.fsf@HIDDEN> <86tsz47pzv.fsf@HIDDEN>
 <D6CE90DE-D8A4-4EE0-9D3B-A4CEA71094DE@HIDDEN>
 <87ldke8aot.fsf@HIDDEN> <86ecq63xkt.fsf@HIDDEN>
 <87qzu613u9.fsf@HIDDEN> <868qge3wh1.fsf@HIDDEN>
 <87ms4u11sw.fsf@HIDDEN> <867bvy3rj2.fsf@HIDDEN>
 <87h5v197j1.fsf@HIDDEN>
 <44523964-CCD9-4949-804C-BF2BBEE4827C@HIDDEN>
 <864iqvo3p1.fsf@HIDDEN>
Date: Thu, 20 Nov 2025 16:41:55 +0100
Message-ID: <87bjkwvhh8.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 79668
Cc: p.stephani2@HIDDEN,
 Mattias =?utf-8?Q?Engdeg=C3=A5rd?= <mattias.engdegard@HIDDEN>,
 nicolas@HIDDEN, 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

>>>>> On Sat, 15 Nov 2025 14:55:38 +0200, Eli Zaretskii <eliz@HIDDEN> said:

    >> From: Mattias Engdeg=C3=A5rd <mattias.engdegard@HIDDEN>
    >> Date: Sat, 15 Nov 2025 13:39:43 +0100
    >> Cc: Eli Zaretskii <eliz@HIDDEN>,
    >> Nicolas Martyanoff <nicolas@HIDDEN>,
    >> p.stephani2@HIDDEN,
    >> 79668 <at> debbugs.gnu.org
    >>=20
    >> > Or we could intern `json-serialize' symbols using a non-default
    >> > obarray. We then get to decide whether an existing symbol gets
    >> > overridden or not, and using strings becomes easy. Obarrays aren=
=CA=BCt
    >> > hash tables, but realistically how many symbols are we talking abo=
ut
    >> > in a single call to `json-serialize'?
    >>=20
    >> Frankly, I don't see what that would accomplish.

    Eli> It will allow us to support strings as keys, which is what the OP
    Eli> requested.  Or what am I missing?

That was the original request, for which I proposed a 2-line patch 4
weeks ago.

But it seems that we need to fix the other perceived problems with
`json-serialize' before that can happen.

Robert
--=20




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 15 Nov 2025 12:55:49 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Nov 15 07:55:49 2025
Received: from localhost ([127.0.0.1]:34393 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vKFoj-0000NM-1L
	for submit <at> debbugs.gnu.org; Sat, 15 Nov 2025 07:55:49 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:51106)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vKFog-0000NA-CC
 for 79668 <at> debbugs.gnu.org; Sat, 15 Nov 2025 07:55:47 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1vKFob-0008N0-0L; Sat, 15 Nov 2025 07:55:41 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=9gnikANSkwVSPrKjrl3+NhfPRDSaYfMkT9G0ndF5G7Q=; b=kJkvbV1xdu1oj3aTwc3u
 dENZuuvg32f2hstap3aaOEhju0dRJmHAcg5wyQ//gYYwsbqa3V2wrGj4OMc7yMSkJAjudqFSjDFjg
 BF4vj4ZJjqGx6DnMfrmWwYla+p5X65R/tR9m1+HcBVueWCjgk7aeS1MQiNnudV2i1WWO2Zt/KX6NL
 U27BEfjmOYccOzfFt3vHsAOd3gDBdJEg3ESvus1nPINzIxPFcY6HFHL6nEVMWet00GBih1dV/BjJ8
 CZAxISzN+jvfc4fKNLcwQGu5+RcOmZTbZIHqdjkdjV8WjLflpYGBUxq7qlloqy6mS6o3NUN2AXXeW
 +25sOTsL4Vw4IA==;
Date: Sat, 15 Nov 2025 14:55:38 +0200
Message-Id: <864iqvo3p1.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Mattias =?utf-8?Q?Engdeg=C3=A5rd?= <mattias.engdegard@HIDDEN>
In-Reply-To: <44523964-CCD9-4949-804C-BF2BBEE4827C@HIDDEN> (message from
 Mattias =?utf-8?Q?Engdeg=C3=A5rd?= on Sat, 15 Nov 2025 13:39:43 +0100)
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
 <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
 <875xc7fgql.fsf@HIDDEN>
 <974738F2-77F1-4EDB-B667-62DFA2AD1900@HIDDEN>
 <87tszrdjh9.fsf@HIDDEN> <86tsz47pzv.fsf@HIDDEN>
 <D6CE90DE-D8A4-4EE0-9D3B-A4CEA71094DE@HIDDEN> <87ldke8aot.fsf@HIDDEN>
 <86ecq63xkt.fsf@HIDDEN> <87qzu613u9.fsf@HIDDEN>
 <868qge3wh1.fsf@HIDDEN> <87ms4u11sw.fsf@HIDDEN>
 <867bvy3rj2.fsf@HIDDEN> <87h5v197j1.fsf@HIDDEN>
 <44523964-CCD9-4949-804C-BF2BBEE4827C@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79668
Cc: p.stephani2@HIDDEN, rpluim@HIDDEN, nicolas@HIDDEN,
 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Mattias Engdegård <mattias.engdegard@HIDDEN>
> Date: Sat, 15 Nov 2025 13:39:43 +0100
> Cc: Eli Zaretskii <eliz@HIDDEN>,
>  Nicolas Martyanoff <nicolas@HIDDEN>,
>  p.stephani2@HIDDEN,
>  79668 <at> debbugs.gnu.org
> 
> > Or we could intern `json-serialize' symbols using a non-default
> > obarray. We then get to decide whether an existing symbol gets
> > overridden or not, and using strings becomes easy. Obarrays arenʼt
> > hash tables, but realistically how many symbols are we talking about
> > in a single call to `json-serialize'?
> 
> Frankly, I don't see what that would accomplish.

It will allow us to support strings as keys, which is what the OP
requested.  Or what am I missing?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 15 Nov 2025 12:39:54 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Nov 15 07:39:54 2025
Received: from localhost ([127.0.0.1]:34322 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vKFZK-0007v9-20
	for submit <at> debbugs.gnu.org; Sat, 15 Nov 2025 07:39:54 -0500
Received: from mail-lj1-x22e.google.com ([2a00:1450:4864:20::22e]:45258)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <mattias.engdegard@HIDDEN>)
 id 1vKFZI-0007ut-5I
 for 79668 <at> debbugs.gnu.org; Sat, 15 Nov 2025 07:39:52 -0500
Received: by mail-lj1-x22e.google.com with SMTP id
 38308e7fff4ca-37b935df7bfso23567531fa.2
 for <79668 <at> debbugs.gnu.org>; Sat, 15 Nov 2025 04:39:52 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1763210386; x=1763815186; darn=debbugs.gnu.org;
 h=to:references:message-id:content-transfer-encoding:cc:date
 :in-reply-to:from:subject:mime-version:sender:from:to:cc:subject
 :date:message-id:reply-to;
 bh=dk1qrRQVTWlPgexuua7PMQfMW40VuuNCl5uBbiFCh3o=;
 b=GWLcVcPVsWGo0khZ0OWFgBYxu4nFtsU4IHUOLVM1jw+1gkNz219iKylOi2A17qq4Bt
 dKrtOn73YycLBwvdyxKNBz61UyQgRKtYWY+e59sPRiuM3IKzEG/2DYDpe06jym8RiTkN
 yjUyu/Qy33r33JR9w9hEYZfa2yGmgjcjzVr3fpNqxs96Kwz3L3OEpydVS+t7nCKyd/xw
 0h9ONw+i1h1bo4MT2z7If/ExE9yOEvbguWAKPLdeS4NTGnX8fkNbJTZPcbkrh8AdUUV+
 mSFt9CRkThXkl3I7r2ucQ4kkv1xQBFww/8LPNYI1amt4h0Y0078W2NoAqNAF9ZVIuj9u
 eQ3g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1763210386; x=1763815186;
 h=to:references:message-id:content-transfer-encoding:cc:date
 :in-reply-to:from:subject:mime-version:sender:x-gm-gg
 :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
 bh=dk1qrRQVTWlPgexuua7PMQfMW40VuuNCl5uBbiFCh3o=;
 b=oglyOs5LczDXB4REe/auv3XrxbnazfUwCU6k+fcqV7l3c1XAJwDhC518XDUnqSDCZV
 sEjaQjefvFaH3evjPK9/iDTThpo5MMa0UfK+y54TSBuXgK+Jr7iMsV7MAUC4GNI6hLN0
 dEX1XlMjcGZX2+XXxyGe0QpgXlZYF8L8wPakec5GSLaPJf7/u79Nc4wozcG/JFpZ8OkR
 qZwk7wM7XEQhjtirNaRUod6VsiBLil7jn3/AlH+JatAm6JlwYYFQ0Ct9pDSoExeKX3Ng
 aPGLCYQ15lC7xsSf5xUPZQSZIStdX/NAgd+PvB+i/EElm0KQGZNfxOk+xGXlpT8rVZzT
 ndwA==
X-Forwarded-Encrypted: i=1;
 AJvYcCUPIeWk57kpwx6+lPg/BqhQveSxxpLyUzrXfnopnV2zMhABUMYq/ML1keRSVauGUCqbIzu1IQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwGGsREEyjitD6jsUudnPCsjeuGMPplf648kBlUInu4QrF4/7Id
 mcjgtwcmA5Zz7VkbeDQYmVAxeK/fJgYQF4vtp/AMvoLDPBnBy4zE527d
X-Gm-Gg: ASbGncskFfDMv0yVibdk8loVuujWBV3cAI8G9jxsTjauamsyTNpuDTuYZX+tZV8G0r+
 NkvYf5WhkRPHdxMxuUGH1l0GXzfT03QahZGH/VRkFcmye6XOBnWImfaxge6+4H3PMd6UhygLfOk
 VjzxTodC2k88bli8AX26awdDTKGJSEsLjODPBR0poSZGSaytexQ0s8H0HjO34zSq6oczICG/eNp
 Oraq6QAp1TNXi4+19RUy4nPOVHnSmm2DL52TfOsWz1Hw0585NaNMi4YrRbeL0TxhcoOdVOd/v9K
 yygsh1R8+JKsVxqePbNp0sWXe+yrarTRq1pSu4fqxBqHqwSVRLhh5jr27zi7NvgD3zeTfXW4GMZ
 vop8vMLDXK596jHv4/ie2Pk9huuO6+KcawrZyFeq7e+JozuEKIbPrWQIEUhWXRze1DdHcsLisZs
 cMw90bpKzLIkOWy7tEWH2NPQGP+9h6jNior+UOjkDwNoyR/UFX1houBeobS6BDPiy3Vm9TKD6O8
 kw+
X-Google-Smtp-Source: AGHT+IH3L8xOhxOopF3sz/ZrDYhgs6/NtxdUZuVwemoKHQZQZcQfVHZQSEldO3ttAzXX2bafZNINNg==
X-Received: by 2002:a2e:b002:0:b0:37b:97ae:6728 with SMTP id
 38308e7fff4ca-37babbec16emr12481571fa.34.1763210385301; 
 Sat, 15 Nov 2025 04:39:45 -0800 (PST)
Received: from smtpclient.apple (c188-150-186-155.bredband.tele2.se.
 [188.150.186.155]) by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-37b9cb7602fsm15194691fa.0.2025.11.15.04.39.44
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 15 Nov 2025 04:39:44 -0800 (PST)
Content-Type: text/plain;
	charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.120.0.1.15\))
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
From: =?utf-8?Q?Mattias_Engdeg=C3=A5rd?= <mattias.engdegard@HIDDEN>
In-Reply-To: <87h5v197j1.fsf@HIDDEN>
Date: Sat, 15 Nov 2025 13:39:43 +0100
Content-Transfer-Encoding: quoted-printable
Message-Id: <44523964-CCD9-4949-804C-BF2BBEE4827C@HIDDEN>
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
 <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
 <875xc7fgql.fsf@HIDDEN>
 <974738F2-77F1-4EDB-B667-62DFA2AD1900@HIDDEN>
 <87tszrdjh9.fsf@HIDDEN> <86tsz47pzv.fsf@HIDDEN>
 <D6CE90DE-D8A4-4EE0-9D3B-A4CEA71094DE@HIDDEN> <87ldke8aot.fsf@HIDDEN>
 <86ecq63xkt.fsf@HIDDEN> <87qzu613u9.fsf@HIDDEN>
 <868qge3wh1.fsf@HIDDEN> <87ms4u11sw.fsf@HIDDEN>
 <867bvy3rj2.fsf@HIDDEN> <87h5v197j1.fsf@HIDDEN>
To: Robert Pluim <rpluim@HIDDEN>
X-Mailer: Apple Mail (2.3654.120.0.1.15)
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79668
Cc: p.stephani2@HIDDEN, Eli Zaretskii <eliz@HIDDEN>,
 Nicolas Martyanoff <nicolas@HIDDEN>, 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

> Or we could intern `json-serialize' symbols using a non-default
> obarray. We then get to decide whether an existing symbol gets
> overridden or not, and using strings becomes easy. Obarrays aren=CA=BCt
> hash tables, but realistically how many symbols are we talking about
> in a single call to `json-serialize'?

Frankly, I don't see what that would accomplish.





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 15 Nov 2025 09:45:25 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Nov 15 04:45:24 2025
Received: from localhost ([127.0.0.1]:33778 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vKCqS-0006RZ-FW
	for submit <at> debbugs.gnu.org; Sat, 15 Nov 2025 04:45:24 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:53574)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vKCqQ-0006QR-Ie
 for 79668 <at> debbugs.gnu.org; Sat, 15 Nov 2025 04:45:23 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1vKCqK-0004Oj-Qu; Sat, 15 Nov 2025 04:45:17 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=zfokrH+pffrQyuHLFCzf2ecdsbU6MVD9GQArVDqwrbU=; b=nuxmMsNbK1rH3WoU6iKM
 TjGoTRC4T4wyCVed/7Z9rvoCNW7MZDcxXGZAKAkmPZPORG+yq9niehvkDjboEwRSKo8L+nhai2ev1
 CNZbqJONZOHIFXI28RvMiLoIW5HeV+Xu43QHIzAAtI56CZNq03DkO1LnqrKxgExmWny4pMYiEJ9Cf
 B3iipCiY44YPaS2SObw1cfqF/9RPZXRTBNQHwm+Gt4PFqcrSOLA/65HXE/smm5Q7F2oAhjVZxUf14
 Ad+kl1A8fPPrQG3KEa0Y9vh9ziHpWd4qSn8v4AEPlzZMyG7lBENzOKUhNt25YKkwwXkJ9WRCVKZqW
 isNHJdb/4YT67A==;
Date: Sat, 15 Nov 2025 11:45:12 +0200
Message-Id: <86seefocif.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Robert Pluim <rpluim@HIDDEN>
In-Reply-To: <87h5v197j1.fsf@HIDDEN> (message from Robert Pluim on Mon, 10
 Nov 2025 17:28:18 +0100)
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
 <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
 <875xc7fgql.fsf@HIDDEN>
 <974738F2-77F1-4EDB-B667-62DFA2AD1900@HIDDEN>
 <87tszrdjh9.fsf@HIDDEN> <86tsz47pzv.fsf@HIDDEN>
 <D6CE90DE-D8A4-4EE0-9D3B-A4CEA71094DE@HIDDEN>
 <87ldke8aot.fsf@HIDDEN> <86ecq63xkt.fsf@HIDDEN>
 <87qzu613u9.fsf@HIDDEN> <868qge3wh1.fsf@HIDDEN>
 <87ms4u11sw.fsf@HIDDEN> <867bvy3rj2.fsf@HIDDEN>
 <87h5v197j1.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79668
Cc: p.stephani2@HIDDEN, mattias.engdegard@HIDDEN, nicolas@HIDDEN,
 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Robert Pluim <rpluim@HIDDEN>
> Cc: Nicolas Martyanoff <nicolas@HIDDEN>,  p.stephani2@HIDDEN,
>   mattias.engdegard@HIDDEN,  79668 <at> debbugs.gnu.org
> Date: Mon, 10 Nov 2025 17:28:18 +0100
> 
> >>>>> On Mon, 10 Nov 2025 16:12:49 +0200, Eli Zaretskii <eliz@HIDDEN> said:
> 
>     >> From: Nicolas Martyanoff <nicolas@HIDDEN>
>     >> Cc: Nicolas Martyanoff <nicolas@HIDDEN>,  rpluim@HIDDEN,
>     >> p.stephani2@HIDDEN,  mattias.engdegard@HIDDEN,
>     >> 79668 <at> debbugs.gnu.org
>     >> Date: Mon, 10 Nov 2025 13:59:11 +0100
>     >> 
>     >> Eli Zaretskii <eliz@HIDDEN> writes:
>     >> 
>     >> >> I'm puzzled by the
>     >> >> reimplementation of a hash table just for json.c, especially one so
>     >> >> limited that only handles symbols.
>     >> >
>     >> > I don't think I follow.  Symbols are stored using a data structure
>     >> > that ensures uniqueness, so we didn't need to reimplement anything.
>     >> 
>     >> json.c has a symset_t type that contains a crude hash table used to
>     >> detect duplicates just for serialization. The way it is implemented
>     >> only works for symbols.
> 
>     Eli> Ah, okay.  That could be a historic accident, since this version of
>     Eli> json.c was originally developed outside of Emacs.  Or maybe it's
>     Eli> exactly the right thing, I don't know.  We are not discussing whether
>     Eli> the implementation of symbols as keys needs some changes.
> 
>     >> >> Another option would be to just iterate on existing keys: it's not
>     >> >> like objects have hundreds of entries.
>     >> >
>     >> > That doesn't scale, so I think we shouldn't be doing it.
>     >> 
>     >> So we're back to: json.c enforces deduplication for really bad reasons
>     >> but we cannot change that, doing deduplication would be costly for
>     >> strings, so we cannot let developers use strings for JSON strings.
> 
>     Eli> No, that's not what I said.  I said we should not just use the naïve
>     Eli> brute-force algorithm.  Something that uses hash tables should be
>     Eli> fine, though.
> 
> Or we could intern `json-serialize' symbols using a non-default
> obarray. We then get to decide whether an existing symbol gets
> overridden or not, and using strings becomes easy. Obarrays arenʼt
> hash tables, but realistically how many symbols are we talking about
> in a single call to `json-serialize'?

Can you show a patch in this direction, making it an opt-in feature?
I think we will be able to install that.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 10 Nov 2025 16:28:30 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 10 11:28:30 2025
Received: from localhost ([127.0.0.1]:38525 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vIUkn-0004Gi-GA
	for submit <at> debbugs.gnu.org; Mon, 10 Nov 2025 11:28:29 -0500
Received: from mail-wr1-x435.google.com ([2a00:1450:4864:20::435]:54568)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <rpluim@HIDDEN>) id 1vIUkk-0004GW-GJ
 for 79668 <at> debbugs.gnu.org; Mon, 10 Nov 2025 11:28:27 -0500
Received: by mail-wr1-x435.google.com with SMTP id
 ffacd0b85a97d-42b2a0c18caso2290079f8f.1
 for <79668 <at> debbugs.gnu.org>; Mon, 10 Nov 2025 08:28:26 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1762792100; x=1763396900; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:message-id:date:references
 :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id
 :reply-to; bh=oDSl+dz/D8a0ZN8c9IaCYVhOJqMWdX9tz0RatZxDchc=;
 b=WFy05IhnEyFB+PYnn9tPZaRkn/Yof5XY31LnDhvDX3fUW77G94nWERTghL/wYzUdw2
 5/I65aF66dGjhzdKoQmedX4USy0Bg+CiILbydaMBu+OS97naOPgpVmfzyCnbbc7R4KA+
 TQqAwvVJqcnzMaycZqif8X6K84kioh6CD9qWjPVCWpMSap+0BPicVHp4Avg/bdwcNspO
 ++q8wSx+GuuaBTU8ybza1k2lAMnss7hW2+ra/sMyIBDGW0iZEqZnFcMIyh9TIfhUzHQZ
 wBxqpl32otgR51KUlEDf4TNMqcXAF1Uxplgir1bnCcDGY2QyZE4ZXvhwkw8ESlHat+wI
 GSiQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1762792100; x=1763396900;
 h=content-transfer-encoding:mime-version:message-id:date:references
 :in-reply-to:subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to
 :cc:subject:date:message-id:reply-to;
 bh=oDSl+dz/D8a0ZN8c9IaCYVhOJqMWdX9tz0RatZxDchc=;
 b=gkFS2h2od+9HoSpCArh5n6X46fUS5prdk5zQTkkpWuMQaADfa+dHhaKu74dEMDO1St
 B6Bgo8Kerb3fjewqyG2d5MvZeWdfUlIn8XkvEKV8W8n+zzyv+hhPVd43sv/V4GRDW9uh
 MkLRIFDrS4XdqO6ytW/Sq2FIuuwDEnZBrS9dY2aGb4wqC/QS+eieM9roS/bcjXT+yWYS
 d9QnejQa6jcMJ8xYgX6r92mwYWo8x8hmS/Yk5806qYS3QwL+g4goRxNDzRQSkIWRhVYE
 7kpta3OZT5x0MoetBgZ0N7B+5IkNTFrdLd7IHK/MHZzOF1RPfyNlk42RcyasZz4ANl9S
 2ibA==
X-Forwarded-Encrypted: i=1;
 AJvYcCWErkakbHPU5ioLDJHxzNtfi9AdIHVRwqoPbX2n9Vkxip6ayqtH4LG0Cm7dLhPQyYxXWvcA3Q==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxiYBBmm1fDSPIRwNCCe+mUM8IdYZp858jBbNmR3bqYv0HmwmS5
 1+oN0Ry/UHTvy7U9u64h2SScjXk8QzGboHmxUPStHok2xBmq5qAZAStoEt8L7V/8
X-Gm-Gg: ASbGncsQ3Wlw3YDrDNJyU02GWpVsVDlElUiU2A/d1vVJRsve2fNkART8LtHyyWotUxx
 oonQdsD/QuMnIMFQ0S0goS1th79C2Y6p3uvd2ytU1Q0gtjcfndcWYPKGZsYSKntD5zOyRr1lz7E
 mp8bf31M+TrAWW2VVDPYElkbwGOf2Wgf6Khq/55GZi7s7HcTjdcR4TyeKYhW7Ygjb8tbv1oEgs8
 ++/v86qrzhnKyZCoelEbNub9OnCI7NzRzWd+9rHbB5HpkIMh4poZnahrdwLCn7OgnalcuwjOTyH
 8gbDwt+XHfIfGIlEEAo5coTCt6m0fqKPsgV2IkVmpxkkMuhBux3eNntX2TA3W3LaZXoT6V7GHFc
 1Uxr7CquXjZjfZwcxkbNzgTDoGqJk4glWx60Z9IzARsAQuQjy5vTQbZXsOJ6BngI=
X-Google-Smtp-Source: AGHT+IHdLoAf5c9XRJQ1yJZgs1lNSYXBind/QPmhGHW7eViMCBuJIwEEu1UtvDtl4PWbBCUG23CkfA==
X-Received: by 2002:a05:6000:1847:b0:425:769e:515a with SMTP id
 ffacd0b85a97d-42b2dca33c4mr7323164f8f.42.1762792099838; 
 Mon, 10 Nov 2025 08:28:19 -0800 (PST)
Received: from rltb ([2a01:e0a:3f3:fb50:bd71:8469:8bbf:9925])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-42ac675ca86sm23216468f8f.31.2025.11.10.08.28.19
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 10 Nov 2025 08:28:19 -0800 (PST)
From: Robert Pluim <rpluim@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
In-Reply-To: <867bvy3rj2.fsf@HIDDEN>
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
 <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
 <875xc7fgql.fsf@HIDDEN>
 <974738F2-77F1-4EDB-B667-62DFA2AD1900@HIDDEN>
 <87tszrdjh9.fsf@HIDDEN> <86tsz47pzv.fsf@HIDDEN>
 <D6CE90DE-D8A4-4EE0-9D3B-A4CEA71094DE@HIDDEN>
 <87ldke8aot.fsf@HIDDEN> <86ecq63xkt.fsf@HIDDEN>
 <87qzu613u9.fsf@HIDDEN> <868qge3wh1.fsf@HIDDEN>
 <87ms4u11sw.fsf@HIDDEN> <867bvy3rj2.fsf@HIDDEN>
Date: Mon, 10 Nov 2025 17:28:18 +0100
Message-ID: <87h5v197j1.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79668
Cc: p.stephani2@HIDDEN, mattias.engdegard@HIDDEN,
 Nicolas Martyanoff <nicolas@HIDDEN>, 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

>>>>> On Mon, 10 Nov 2025 16:12:49 +0200, Eli Zaretskii <eliz@HIDDEN> said:

    >> From: Nicolas Martyanoff <nicolas@HIDDEN>
    >> Cc: Nicolas Martyanoff <nicolas@HIDDEN>,  rpluim@HIDDEN,
    >> p.stephani2@HIDDEN,  mattias.engdegard@HIDDEN,
    >> 79668 <at> debbugs.gnu.org
    >> Date: Mon, 10 Nov 2025 13:59:11 +0100
    >>=20
    >> Eli Zaretskii <eliz@HIDDEN> writes:
    >>=20
    >> >> I'm puzzled by the
    >> >> reimplementation of a hash table just for json.c, especially one =
so
    >> >> limited that only handles symbols.
    >> >
    >> > I don't think I follow.  Symbols are stored using a data structure
    >> > that ensures uniqueness, so we didn't need to reimplement anything.
    >>=20
    >> json.c has a symset_t type that contains a crude hash table used to
    >> detect duplicates just for serialization. The way it is implemented
    >> only works for symbols.

    Eli> Ah, okay.  That could be a historic accident, since this version of
    Eli> json.c was originally developed outside of Emacs.  Or maybe it's
    Eli> exactly the right thing, I don't know.  We are not discussing whet=
her
    Eli> the implementation of symbols as keys needs some changes.

    >> >> Another option would be to just iterate on existing keys: it's not
    >> >> like objects have hundreds of entries.
    >> >
    >> > That doesn't scale, so I think we shouldn't be doing it.
    >>=20
    >> So we're back to: json.c enforces deduplication for really bad reaso=
ns
    >> but we cannot change that, doing deduplication would be costly for
    >> strings, so we cannot let developers use strings for JSON strings.

    Eli> No, that's not what I said.  I said we should not just use the na=
=C3=AFve
    Eli> brute-force algorithm.  Something that uses hash tables should be
    Eli> fine, though.

Or we could intern `json-serialize' symbols using a non-default
obarray. We then get to decide whether an existing symbol gets
overridden or not, and using strings becomes easy. Obarrays aren=CA=BCt
hash tables, but realistically how many symbols are we talking about
in a single call to `json-serialize'?


Robert
--=20




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 10 Nov 2025 14:13:17 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 10 09:13:17 2025
Received: from localhost ([127.0.0.1]:37825 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vISdw-0006rN-NM
	for submit <at> debbugs.gnu.org; Mon, 10 Nov 2025 09:13:17 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:38948)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vISds-0006r7-Eg
 for 79668 <at> debbugs.gnu.org; Mon, 10 Nov 2025 09:13:15 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1vISdk-0001Ws-N3; Mon, 10 Nov 2025 09:13:06 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=tHT40e7/jlvgn312d94bTSSRvs8t9+9D2mitIXIW44k=; b=VB7mUovUF6/znz0XO4Ek
 tBe78unXB94UkmZWQMxYK4f6paqwgfRDr9qvs36Cn8RzFydbhijL9RTjqmSTla+EMfmP+xJiyCNzd
 INCX6dNgWXVpRRSp9K5rMOGq+5F2qzmGs71fBdplNHu1qIiZKCWMNpy7dfGJqXzxPh+/8rvSEIKKY
 sxLxuepB5F2V5JDxA1ok71eM40arbIzh3fL3UeApOGYDW2G5mKdMDXl7Wq2uWAEEv6dPyt/Nq8P+x
 6g4aadnzYpTSfshXaLAQv2j1MsR7qPFn6TUukf80V4MwjK2kxiATJklia6pTdSxYRTGeux0CuSyRX
 VG4rhVxnpnYjwA==;
Date: Mon, 10 Nov 2025 16:12:49 +0200
Message-Id: <867bvy3rj2.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Nicolas Martyanoff <nicolas@HIDDEN>
In-Reply-To: <87ms4u11sw.fsf@HIDDEN> (message from Nicolas
 Martyanoff on Mon, 10 Nov 2025 13:59:11 +0100)
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
 <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
 <875xc7fgql.fsf@HIDDEN>
 <974738F2-77F1-4EDB-B667-62DFA2AD1900@HIDDEN>
 <87tszrdjh9.fsf@HIDDEN> <86tsz47pzv.fsf@HIDDEN>
 <D6CE90DE-D8A4-4EE0-9D3B-A4CEA71094DE@HIDDEN>
 <87ldke8aot.fsf@HIDDEN> <86ecq63xkt.fsf@HIDDEN>
 <87qzu613u9.fsf@HIDDEN> <868qge3wh1.fsf@HIDDEN>
 <87ms4u11sw.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79668
Cc: rpluim@HIDDEN, mattias.engdegard@HIDDEN, p.stephani2@HIDDEN,
 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Nicolas Martyanoff <nicolas@HIDDEN>
> Cc: Nicolas Martyanoff <nicolas@HIDDEN>,  rpluim@HIDDEN,
>   p.stephani2@HIDDEN,  mattias.engdegard@HIDDEN,
>   79668 <at> debbugs.gnu.org
> Date: Mon, 10 Nov 2025 13:59:11 +0100
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> >> I'm puzzled by the
> >> reimplementation of a hash table just for json.c, especially one so
> >> limited that only handles symbols.
> >
> > I don't think I follow.  Symbols are stored using a data structure
> > that ensures uniqueness, so we didn't need to reimplement anything.
> 
> json.c has a symset_t type that contains a crude hash table used to
> detect duplicates just for serialization. The way it is implemented
> only works for symbols.

Ah, okay.  That could be a historic accident, since this version of
json.c was originally developed outside of Emacs.  Or maybe it's
exactly the right thing, I don't know.  We are not discussing whether
the implementation of symbols as keys needs some changes.

> >> Another option would be to just iterate on existing keys: it's not
> >> like objects have hundreds of entries.
> >
> > That doesn't scale, so I think we shouldn't be doing it.
> 
> So we're back to: json.c enforces deduplication for really bad reasons
> but we cannot change that, doing deduplication would be costly for
> strings, so we cannot let developers use strings for JSON strings.

No, that's not what I said.  I said we should not just use the naïve
brute-force algorithm.  Something that uses hash tables should be
fine, though.

> I will skip json.c and go back to the old json Elisp module, or simply
> write my own (because JSON-READ forces the string-to-symbol conversion
> when using alists for objects instead of hash table; though I imagine I
> could send a patch with an option not to convert).

I think you are jumping to conclusions too fast, without leaving
enough time for people to chime in and voice their opinion and suggest
possible solutions.  I suggest to wait a bit longer before
conclusions, definitely such extreme ones.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 10 Nov 2025 13:32:04 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 10 08:32:04 2025
Received: from localhost ([127.0.0.1]:37745 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vIS04-0005Hn-Ew
	for submit <at> debbugs.gnu.org; Mon, 10 Nov 2025 08:32:04 -0500
Received: from mail-lj1-x22f.google.com ([2a00:1450:4864:20::22f]:47481)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <mattias.engdegard@HIDDEN>)
 id 1vIS01-0005HQ-KO
 for 79668 <at> debbugs.gnu.org; Mon, 10 Nov 2025 08:32:02 -0500
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-378d710caedso25272441fa.3
 for <79668 <at> debbugs.gnu.org>; Mon, 10 Nov 2025 05:32:01 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1762781515; x=1763386315; darn=debbugs.gnu.org;
 h=to:references:message-id:content-transfer-encoding:cc:date
 :in-reply-to:from:subject:mime-version:sender:from:to:cc:subject
 :date:message-id:reply-to;
 bh=bAcG0TyrjRdqH6PDSVuxzj3dtGNTft3BWjGTEq+p1gY=;
 b=bUAx4+xVGC9gl9PAU4IoqGTRizydUtOy0Pr9K9wvqe83uYA0Cd13E/ag+4qbesXboh
 WI5DMoGyvc/SIu4YknKeDL6IrWjBOVxSQ8VAJlhr9uq6gNPKy/0ph4PxteEsAil8mzJz
 QfHpZfkgPLNzCG/DyiAwSvIHKpEnGi9yHCA+fXAyqPu9oKo91z+kSgr1PKHP8K9rf+g3
 87FTgmlDqDqjUSqAaVl2a/kua4C7N9z2XoaM53HbWRZKZjA23PluTmoEWPXYwuwLMDtF
 cQBFlmCFtdoaa+sZx+Qj4wKDHQj3MBu25GR9EuwbVqOOZkPBdCWuCnTEYZgYpZgYXLF4
 IV9A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1762781515; x=1763386315;
 h=to:references:message-id:content-transfer-encoding:cc:date
 :in-reply-to:from:subject:mime-version:sender:x-gm-gg
 :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
 bh=bAcG0TyrjRdqH6PDSVuxzj3dtGNTft3BWjGTEq+p1gY=;
 b=Z7wjk5SteEuocUsSqwniQSPA/ICk0YncNH7s+nOPKOVB/QIGsnnTpZJm29TXIsshht
 xNvV1G8qbnHuTK3mOwuB6z1mo2JG0FjCCG3cpGy6CumJ/xmYSYvOI/P8x5/QdHy/EH8n
 RMIWTXSGjWH4c2Nf+AGibmuI49bDrhk+kPVFCk49OdVtr+w+CHEVRsn1FMDtx4FrNN8K
 xdSDTso2CdvKAZXyVxWUlXyRVHrGQ8OxgitIXT+0KF9TBkkCLbl3qPGowZuMdbI5j3Kx
 07ZG5aKMmjIw7CDTmCy9ZBQk0U2mD44loAnmF6LrqaiW7S6QrJHFzc4C8fyCiHDxQ8sJ
 cpww==
X-Forwarded-Encrypted: i=1;
 AJvYcCXJN/h8sgzuCBl0iKWMFc12Mtx8cYiu+j+YJCt0Pe2aJpKD9Hef7KUoN240TrEv/tIHeD/3rQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwBTJgFHImU3TytDZnic/wgRXoNy79E/+2gRWsdK8qEWhhOtVPV
 kZyXOj8QyTUjtKnDFsMORfM1bK755ZQPUxGlrtsC1oV/ZLsi1CRr6rDI
X-Gm-Gg: ASbGncsrRPOZWiXZsalk/YWmD6fM6uuQZBozrGAYSqDH7OqBtngn8DUUGAFaCNyYRFV
 MAeWuBLk8lLZBZOizODXMhrxZoTkpctDYjick4cOil16BXLH8sDDoUV4IlkaeaDUFL3UCLxOVMb
 GDAPyKfcol1wFHQACwyXmDirJf0mKMZNx0cDmCgFUoUUGDfTuMdgjLFVgB6xzwfeC5hkk6R1N59
 uaTnkCHriS0HMk22MEPXpKlUG/xgviHzHe01/s7OJO1kUBjb+BERk5J8ZjKFWBioyJ2mLf+vlRU
 hfB9nE6fKuQbPWhfDWnPv1PQ/1/GdCNJ2agJA3KGnIyAJTFdKh6AIpgCtU57748Fuz7Gwkh8x3W
 YkjaonmfnXbwkuNVdU9Inj3mXyFkVqkeIH5Dx9xQs9x+9q0mz6X4JsvvCswnSGFyPCe4AErW8le
 4B06/UAjzSiZuLUePVVZfkVhJJybk+yq3QwW6eTKOCFAjAmnjAGbIfFcqps2M7BTftrA==
X-Google-Smtp-Source: AGHT+IF2S5Gz7nZlq1lEntFm9DuPeZlsRi6tr+WxyT1HXoC2XlxdMn58AMUVUZUH1qI2RoreA7T7Yg==
X-Received: by 2002:a05:6512:31d3:b0:591:ec11:7f93 with SMTP id
 2adb3069b0e04-5945f17fb1emr2042854e87.23.1762781514794; 
 Mon, 10 Nov 2025 05:31:54 -0800 (PST)
Received: from smtpclient.apple (c188-150-186-155.bredband.tele2.se.
 [188.150.186.155]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-5944a0b7616sm3973668e87.58.2025.11.10.05.31.53
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 10 Nov 2025 05:31:54 -0800 (PST)
Content-Type: text/plain;
	charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.120.0.1.15\))
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
From: =?utf-8?Q?Mattias_Engdeg=C3=A5rd?= <mattias.engdegard@HIDDEN>
In-Reply-To: <877bvzz111.fsf@HIDDEN>
Date: Mon, 10 Nov 2025 14:31:53 +0100
Content-Transfer-Encoding: quoted-printable
Message-Id: <925DA04E-70FB-4523-B2A3-7EAE335F59F4@HIDDEN>
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
 <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
 <875xc7fgql.fsf@HIDDEN>
 <974738F2-77F1-4EDB-B667-62DFA2AD1900@HIDDEN>
 <87tszrdjh9.fsf@HIDDEN> <86tsz47pzv.fsf@HIDDEN>
 <877bvzz111.fsf@HIDDEN>
To: Nicolas Martyanoff <nicolas@HIDDEN>
X-Mailer: Apple Mail (2.3654.120.0.1.15)
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79668
Cc: Eli Zaretskii <eliz@HIDDEN>, p.stephani2@HIDDEN, 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

9 nov. 2025 kl. 16.19 skrev Nicolas Martyanoff <nicolas@HIDDEN>:

> If it helps, here is an almost complete patch that add support for
> object strings:

Thank you but it's not code that we need, it's the reasons for it.

Let's go back to fundamentals. There appears to be (very broadly) two =
kinds of JSON objects:

- Record-like, whose keys come from a fairly small and mostly-known set
- Table-like, whose keys are arbitrary strings, forming a =
unique-constrained column or primary key.

Record-like objects are usually handled well in elisp with alists or =
plists: the objects are small enough that the O(n) look-up doesn't hurt =
much, and keys being symbols is useful for meta-programming and fast key =
matching. The small set of keys doesn't make symbol interning too =
burdensome.

Table-like objects are more naturally represented using string-keyed =
hash tables. Objects can be large and, as you noted, we don't want to =
intern all keys.

(Objects with duplicate keys make little sense as arrays would be the =
obvious type to use instead, and, as mentioned earlier, interoperability =
would be terrible.)

The JSON parser takes a single `:object-type` parameter; ideally it =
would be a schema, for each object to be deserialised into its desired =
type, but that's probably over-engineering it.

It's not obvious how best to (de-)serialise elisp `cl-defstruct` objects =
without extra boilerplate but I'll leave suggestions about that for =
others.

What about accepting alists or plists with string keys? I'm not against =
it in principle but if we did, key uniqueness should probably be the =
user's responsibility. The serialiser would have to use some kind of =
hash table which would increase overhead even when the user knew that =
the keys were already unique by design.

Can you say whether your need for string-keyed [ap]lists is for objects =
that are record-like, table-like, both or some other variant? Trivial =
maybe, but the taxonomy is useful for understanding. (I realise that the =
same object can be table-like to one software layer and record-like to =
another.)





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 10 Nov 2025 12:59:24 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 10 07:59:24 2025
Received: from localhost ([127.0.0.1]:37670 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vIRUS-0003mP-4c
	for submit <at> debbugs.gnu.org; Mon, 10 Nov 2025 07:59:24 -0500
Received: from mail-wr1-x433.google.com ([2a00:1450:4864:20::433]:43010)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <nicolas@HIDDEN>) id 1vIRUM-0003mD-KH
 for 79668 <at> debbugs.gnu.org; Mon, 10 Nov 2025 07:59:21 -0500
Received: by mail-wr1-x433.google.com with SMTP id
 ffacd0b85a97d-429c7f4f8a2so1399182f8f.0
 for <79668 <at> debbugs.gnu.org>; Mon, 10 Nov 2025 04:59:18 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=n16f-net.20230601.gappssmtp.com; s=20230601; t=1762779552; x=1763384352;
 darn=debbugs.gnu.org; 
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=IkUke7y9VJR6VKAHZUgHQzOM0+sjoRaRM2SiuFE0KPc=;
 b=S9LdPQrZ2o7GEj5BVGWtQ8ZrbpSjOxByN85kP3CrTCdxpTCqSTOp7/IQtL2HZqeI36
 6T4JuIGjVzFexQup6FBazK1M0NicOVzo74K+ioQDTK/8hHt/ToRQP3mdWLIpczNntVXr
 vt25Mzj2mg2thIJZneEQm0nqaIBr6ol6gE//a02DKN+uzae9FBZJlpg5nWpurlwhKWsK
 ngxS/ePYdj2adi9divNuIv5Ujcub47jayNTCOZtt2Qk3y7w9ltomTl30MVMCvUsyRop2
 DEb/fhBOSY2s3zgCRMzu1pMVdgbrlniTqDUQ1UpwnMenzHSCLvKXP2M0+042rhch5ONN
 koyw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1762779552; x=1763384352;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject
 :date:message-id:reply-to;
 bh=IkUke7y9VJR6VKAHZUgHQzOM0+sjoRaRM2SiuFE0KPc=;
 b=QIwJiVf7isqj1gk0BSEUtV2ZozddDdk/s1QY32IHN7TaC5psvQBm0KVADzsom3YwL1
 Nnaa7EWHITYzqQPsmBajNeHQimSyvNMMuWgeI9Ajo0hd/VDH6ujz+zfjJmx/f9z9D07a
 ZCjhs7T8PDV7PyEhcd4NqkGcgZ5OqsAor+XZ+Hp4qyQ73TVDbPUQGKLwCjglPKMab8aT
 tG3Ll3FVbvCzUkUBZNUtSAtrKLydahLcXhbEmBhPLhzcpOKqBk1F4B81SfzMl7u1JmBr
 td8ee77DeiDnlGZNwvDSkkU+WG74V8Loms2owHUKRrDT8pUDn3RwuGxJkxv4d1/uo5aA
 6y8g==
X-Forwarded-Encrypted: i=1;
 AJvYcCXVWKaWhT0QOXXa7FEHqbLWor0zFBY+2ShyjLir/eYJ2q0gr/vkueOHCa8d1ZmC4NITboaabg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwXlIwhbRjKvXMURynWRMnvKtvPQ2HxdZ3bkR3aiD0oZKyJa0/s
 QxYjkj+tmg43TTNYzKQx8vyK6jbQSUKU2AtCcEq9eb5XTEHqJXj6oMnNxDprFwsu/aVQB7KjeBL
 bkXDu6rfR7g==
X-Gm-Gg: ASbGncvvnnOalhnJIjFeEFpcVAXN90nVGISh/MfwLKdEKFzLyMIXliXHBOTjZph1jA+
 tqmrSbu08WpOaoEHfaOPatyL7CXSaN4743C1Gmr/UoI6CABWUiIsDZDuUENoJWox6n7+meZC+bx
 RTCuWDPyf9+Ro0barqlWAcFiXW7gQxLOq7PKfVuBteWcxtqgm5IhNATi+lHruatj5uRSJrPsC6H
 XpMCT4sWqaqg8rvfvY+DbY1Ts1/DuwJy9h3NWlYgY7PXI27APchTcDa50AsAolxyqNO2GRhwyIN
 IVnYo9+kjlafrOtzcsdLyTtOdK6VlbEqlo9h46Lq9RzV5uw25H4ytxr8euHyhSL8Lm5FLN6R1J3
 qSWMGY1TVk41lCgtvU31JfUqXN8yp/Jtd1neWGydtO0+DdIyU/OBR5pG9rcZyu7wlBZclHqnNnh
 cluFTcBu3k2+SVK5Ca+zaxngjr6K+GXmVYOzSs6JqgEmxFY6clkDV+Q6M99b0F1/EX
X-Google-Smtp-Source: AGHT+IEbU1t9y4pEDiWZsL61XMsgYuqRnKN1gu1eDLPvJNhpC1c0xdW4zy3KYkDrCs9ru9tjPIhJUQ==
X-Received: by 2002:a05:6000:144b:b0:429:cff0:1929 with SMTP id
 ffacd0b85a97d-42b2c6a15bbmr7733056f8f.29.1762779552183; 
 Mon, 10 Nov 2025 04:59:12 -0800 (PST)
Received: from valhala (2a01cb040ec9e60097860c4c71a390d6.ipv6.abo.wanadoo.fr.
 [2a01:cb04:ec9:e600:9786:c4c:71a3:90d6])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-42abe63e13csm22032026f8f.19.2025.11.10.04.59.11
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 10 Nov 2025 04:59:11 -0800 (PST)
From: Nicolas Martyanoff <nicolas@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
In-Reply-To: <868qge3wh1.fsf@HIDDEN> (Eli Zaretskii's message of "Mon, 10 Nov
 2025 14:26:02 +0200")
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
 <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
 <875xc7fgql.fsf@HIDDEN>
 <974738F2-77F1-4EDB-B667-62DFA2AD1900@HIDDEN>
 <87tszrdjh9.fsf@HIDDEN> <86tsz47pzv.fsf@HIDDEN>
 <D6CE90DE-D8A4-4EE0-9D3B-A4CEA71094DE@HIDDEN>
 <87ldke8aot.fsf@HIDDEN> <86ecq63xkt.fsf@HIDDEN>
 <87qzu613u9.fsf@HIDDEN> <868qge3wh1.fsf@HIDDEN>
Date: Mon, 10 Nov 2025 13:59:11 +0100
Message-ID: <87ms4u11sw.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79668
Cc: p.stephani2@HIDDEN, rpluim@HIDDEN, mattias.engdegard@HIDDEN,
 Nicolas Martyanoff <nicolas@HIDDEN>, 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

>> I'm puzzled by the
>> reimplementation of a hash table just for json.c, especially one so
>> limited that only handles symbols.
>
> I don't think I follow.  Symbols are stored using a data structure
> that ensures uniqueness, so we didn't need to reimplement anything.

json.c has a symset_t type that contains a crude hash table used to
detect duplicates just for serialization. The way it is implemented
only works for symbols.

>> Another option would be to just iterate on existing keys: it's not
>> like objects have hundreds of entries.
>
> That doesn't scale, so I think we shouldn't be doing it.

So we're back to: json.c enforces deduplication for really bad reasons
but we cannot change that, doing deduplication would be costly for
strings, so we cannot let developers use strings for JSON strings.

This forces people to intern symbols that have no business to be
interned, but clearly it's not going to change.

I will skip json.c and go back to the old json Elisp module, or simply
write my own (because JSON-READ forces the string-to-symbol conversion
when using alists for objects instead of hash table; though I imagine I
could send a patch with an option not to convert).

-- 
Nicolas Martyanoff
https://n16f.net
nicolas@HIDDEN




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 10 Nov 2025 12:26:47 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 10 07:26:47 2025
Received: from localhost ([127.0.0.1]:37616 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vIQys-0008Mq-Nf
	for submit <at> debbugs.gnu.org; Mon, 10 Nov 2025 07:26:47 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:53562)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vIQyq-0008Mc-6f
 for 79668 <at> debbugs.gnu.org; Mon, 10 Nov 2025 07:26:44 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1vIQyk-0001hK-Hf; Mon, 10 Nov 2025 07:26:38 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=2BOaP76c3yGmuonmXkYwO7wxsnP9beTQdYuemig1Ry0=; b=HBSWnqumO7Z0
 7KeODD0TMTSbVin2YAiIIQU3anm3N/ty+rL9gUhMMCWf1dWxdJAmZgwtKEKS5epsi+RK8MEAHpvTJ
 vCiB3XY1Qe521O+XseyUAFJnZWw55EvTEuXdqch1Ago4gBhZ5DaD2bzZXbg1iU+TteY1RJOaHdEsh
 SDXCK9KuM/sr6me5nicJErOn4t1eWkuxvNKUDujm8x5uT3y5JrNoMHehLTCkW6XxXTbDs3UTxM7Uj
 hcw40BFKPhSFV3AZ8DSVAzdiIrBs+3wJ1Q6tu3k3zC5BBXo7jGXyiWG4y5+yX+ct4YGojlMJ8Z/4M
 +Om+mMpypqQO4iTYAw+4YQ==;
Date: Mon, 10 Nov 2025 14:26:02 +0200
Message-Id: <868qge3wh1.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Nicolas Martyanoff <nicolas@HIDDEN>
In-Reply-To: <87qzu613u9.fsf@HIDDEN> (message from Nicolas
 Martyanoff on Mon, 10 Nov 2025 13:15:10 +0100)
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
 <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
 <875xc7fgql.fsf@HIDDEN>
 <974738F2-77F1-4EDB-B667-62DFA2AD1900@HIDDEN>
 <87tszrdjh9.fsf@HIDDEN> <86tsz47pzv.fsf@HIDDEN>
 <D6CE90DE-D8A4-4EE0-9D3B-A4CEA71094DE@HIDDEN>
 <87ldke8aot.fsf@HIDDEN> <86ecq63xkt.fsf@HIDDEN>
 <87qzu613u9.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79668
Cc: rpluim@HIDDEN, mattias.engdegard@HIDDEN, p.stephani2@HIDDEN,
 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Nicolas Martyanoff <nicolas@HIDDEN>
> Cc: Robert Pluim <rpluim@HIDDEN>,  p.stephani2@HIDDEN,
>   mattias.engdegard@HIDDEN,  nicolas@HIDDEN,  79668 <at> debbugs.gnu.org
> Date: Mon, 10 Nov 2025 13:15:10 +0100
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> > How do we ensure uniqueness if we allow strings?
> 
> I do not know enough about Emacs' C internals to be sure, but there has
> to be an internal API for simple hash tables?

Emacs Lisp has hash tables, if that's what you mean.

> I'm puzzled by the
> reimplementation of a hash table just for json.c, especially one so
> limited that only handles symbols.

I don't think I follow.  Symbols are stored using a data structure
that ensures uniqueness, so we didn't need to reimplement anything.

> Another option would be to just iterate on existing keys: it's not
> like objects have hundreds of entries.

That doesn't scale, so I think we shouldn't be doing it.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 10 Nov 2025 12:15:21 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 10 07:15:20 2025
Received: from localhost ([127.0.0.1]:37597 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vIQno-0007y8-Gb
	for submit <at> debbugs.gnu.org; Mon, 10 Nov 2025 07:15:20 -0500
Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]:58852)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <nicolas@HIDDEN>) id 1vIQnm-0007xq-21
 for 79668 <at> debbugs.gnu.org; Mon, 10 Nov 2025 07:15:18 -0500
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-4775638d819so16608405e9.1
 for <79668 <at> debbugs.gnu.org>; Mon, 10 Nov 2025 04:15:18 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=n16f-net.20230601.gappssmtp.com; s=20230601; t=1762776912; x=1763381712;
 darn=debbugs.gnu.org; 
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=VFj4r6pH38uDIsBsXk4A2fCYHJdfBi0Olw6Lpch9iVY=;
 b=x2kPSHfieGZQQgNJwxEL42F/j5KJHcdyJrbQVAY/mb8ezfL1exY5Alr/hkfooM98NL
 HITgEXZoJGvHiOFmPukrboJMLVCm2x1fIKiuM4nMm0aNKef5mDeKCCi7AILDmJoWDi7z
 dgdjxXeYTlw48/shTmrTSZKiqh4xCo/oC7rBIgfR6+V7NzaKGcImX7O3H361EEZl9ILA
 gUHTn61oKWqf7pvgV9zkb+iOruEtnKWDMOIIUIE2MnPi5iVNhEl3OUe9gawvv0l0tnJd
 ZQe7r8HfnPsZqUk+ohNqI4lN8ZB/SLVyvGLCoSCdoeqsDKlB4M8ih2nznfKVMNtpWxof
 ouig==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1762776912; x=1763381712;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject
 :date:message-id:reply-to;
 bh=VFj4r6pH38uDIsBsXk4A2fCYHJdfBi0Olw6Lpch9iVY=;
 b=Zvp3K9MKumYiF1hMtZ3nVkcrr88Nk0Kxz9ki77saDy+g80AVC6JEqk2G24HlZxKzqQ
 vGfhNucfcdbQcj6qsViiYaHOGTiN6y5Age0aUTmXtl6pilIC38u685dJQN/g2Plgo0oZ
 /EnYiDkZqGSVjllrfkkTTYqK8oa9znnI5aQ6Z4eCXNFKCmhruagyubKoQj+EEnh/fcyr
 hdctoCW91iFVXnL4lSZUKtILeIuiNJqjjiAKXEvJyvRjvmt/UKQbeYJea2B4HGQReJuT
 f1nDn8zIngFc0TfB2zteWSoXLdaSRx0Fe/IOFm0X8ouSFfEY7qdJnZmBuJna2Jk9RgWg
 wkBQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCVsrfIKqBC0skEevAjhTdXu6GshiVBTkTp5oPEcFUFbgIuHJNHi7x+C7Gtaulvt82fge0EcYw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwGy0DsxS9PiYPhT96s0XbIHs9ID2Tsfri0TQCMuxEGcBA3RBpI
 AiJVRRInjBCQ38qnbRNgDVXRvYrinyJPc3tpzSHLlrw4wdP2XvgVT84RHcvH8i0hGI6qrmdQtT7
 2Op0PEau6rQ==
X-Gm-Gg: ASbGncsS8CkjDWVsDH5FkMWB5N786NBIy/DJLwRR58IxygX5Xwjrwjfh6K2aB/6l7cl
 9WI88P84BXnPkY+SZrCFywHugjMteULMNSiuQtY91xq9KDknSf467YWSPPxewQ+eURSCEJg4EUC
 ZFC7x3ucLwIISCvvYZ9Nfg9DKLSZ2uwMd6eNvOSYYLdK/km8hLtveANa7FgqyglAA8GupFW38KT
 fg1y91VY5vyA7LLdewN1MUrOK6jqr/jgz39nYKeaRPfQFpKNMq6XHHO2i5oBMGvyQGxhm6TAXIJ
 RLdODlU2K2HHIbLHLqyc01V7C2GN4sShio9GRvyl3lGkjqEfPuBfBUxzMcsMwiK0evU5KkQ/mMx
 kcWVRkCqqdKNL5JmpqjjKsHo6kIZN9AIha0Ga81+Nu+E6hM2a1TeqiXdDVY228uUZAztLAwmFeW
 16c2vTymOYdBR86u4Iy3udE4lXm/5kV7ooIVQDIiiF3LVsFjUEOyfukw==
X-Google-Smtp-Source: AGHT+IGzz125C+4cEQr/gYLtVX7L/s6Ya40QfoYLcg9JAA2m6FAUNxFm42WKOH8POECXr28Gjha8TQ==
X-Received: by 2002:a05:600c:3b8d:b0:477:641a:1402 with SMTP id
 5b1f17b1804b1-477732308acmr82909745e9.4.1762776911227; 
 Mon, 10 Nov 2025 04:15:11 -0800 (PST)
Received: from valhala (2a01cb040ec9e60097860c4c71a390d6.ipv6.abo.wanadoo.fr.
 [2a01:cb04:ec9:e600:9786:c4c:71a3:90d6])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4775cdcc528sm325300055e9.7.2025.11.10.04.15.10
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 10 Nov 2025 04:15:10 -0800 (PST)
From: Nicolas Martyanoff <nicolas@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
In-Reply-To: <86ecq63xkt.fsf@HIDDEN> (Eli Zaretskii's message of "Mon, 10 Nov
 2025 14:02:10 +0200")
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
 <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
 <875xc7fgql.fsf@HIDDEN>
 <974738F2-77F1-4EDB-B667-62DFA2AD1900@HIDDEN>
 <87tszrdjh9.fsf@HIDDEN> <86tsz47pzv.fsf@HIDDEN>
 <D6CE90DE-D8A4-4EE0-9D3B-A4CEA71094DE@HIDDEN>
 <87ldke8aot.fsf@HIDDEN> <86ecq63xkt.fsf@HIDDEN>
Date: Mon, 10 Nov 2025 13:15:10 +0100
Message-ID: <87qzu613u9.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79668
Cc: Robert Pluim <rpluim@HIDDEN>, 79668 <at> debbugs.gnu.org,
 mattias.engdegard@HIDDEN, p.stephani2@HIDDEN, nicolas@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

> How do we ensure uniqueness if we allow strings?

I do not know enough about Emacs' C internals to be sure, but there has
to be an internal API for simple hash tables? I'm puzzled by the
reimplementation of a hash table just for json.c, especially one so
limited that only handles symbols. Another option would be to just
iterate on existing keys: it's not like objects have hundreds of
entries.

-- 
Nicolas Martyanoff
https://n16f.net
nicolas@HIDDEN




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 10 Nov 2025 12:02:36 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 10 07:02:36 2025
Received: from localhost ([127.0.0.1]:37549 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vIQbT-0007Lc-Tf
	for submit <at> debbugs.gnu.org; Mon, 10 Nov 2025 07:02:36 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:51972)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vIQbQ-0007LA-Ig
 for 79668 <at> debbugs.gnu.org; Mon, 10 Nov 2025 07:02:33 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1vIQbI-00052w-QQ; Mon, 10 Nov 2025 07:02:25 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=FQPmQFcY6KL+spz5zkvtqIiEYNe1DRfqse09ENHfHkI=; b=g4Q6se86qHpVgZR1WeD/
 LF8wsJj3P6reNxAE7GxFx1oRaof03ekWWRPfnlgSiyXj6FrHdbPOdV89roucUSs1fDMJxISWL96op
 doD4qUU1CjZyCZesFen/CHKdel1JByBozb+oz9apMJ5gCE10ePKJ7c8MI8zOJD2WYFtGarI5n0iBN
 pZr2ucukhR5LpIMEjEzJOkN/xXK2vtkieOlRLc07F/FCB/kUsTIITDQRsqWzYqDswDBY/qGLbo2kM
 2xyJNKn92ENDFv5vS4JGpVbD1Dapb+izvZJVxCAYiOZSDgJeMa7y/p5XEUspe5Ik+yS04iGJGToG7
 aHfNGZIDdGdrKA==;
Date: Mon, 10 Nov 2025 14:02:10 +0200
Message-Id: <86ecq63xkt.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Robert Pluim <rpluim@HIDDEN>
In-Reply-To: <87ldke8aot.fsf@HIDDEN> (message from Robert Pluim on Mon, 10
 Nov 2025 11:05:22 +0100)
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
 <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
 <875xc7fgql.fsf@HIDDEN>
 <974738F2-77F1-4EDB-B667-62DFA2AD1900@HIDDEN>
 <87tszrdjh9.fsf@HIDDEN> <86tsz47pzv.fsf@HIDDEN>
 <D6CE90DE-D8A4-4EE0-9D3B-A4CEA71094DE@HIDDEN> <87ldke8aot.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79668
Cc: p.stephani2@HIDDEN, 79668 <at> debbugs.gnu.org, mattias.engdegard@HIDDEN,
 nicolas@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Robert Pluim <rpluim@HIDDEN>
> Cc: Eli Zaretskii <eliz@HIDDEN>,  mattias.engdegard@HIDDEN,  Nicolas
>  Martyanoff <nicolas@HIDDEN>,  79668 <at> debbugs.gnu.org
> Date: Mon, 10 Nov 2025 11:05:22 +0100
> 
> >>>>> On Sun, 9 Nov 2025 22:45:56 +0100, Philipp Stephani <p.stephani2@HIDDEN> said:
> 
>     >> Am 08.11.2025 um 11:55 schrieb Eli Zaretskii <eliz@HIDDEN>:
>     >> Philipp, could you please tell why we insist on rejecting strings as
>     >> object keys in JSON serialization?
> 
>     Philipp> I don't remember and can't think of a strong reason right
>     Philipp> now.  There are good reasons for rejecting duplicate keys
>     Philipp> independent of key type (at least by default), see
>     Philipp> e.g. the reasoning given for introducing uniqueness
>     Philipp> checks in the Go JSON API
>     Philipp> (https://go.dev/blog/jsonv2-exp#behavior-flaws):
> 
>     Philipp>     • encoding/json currently accepts objects with duplicate member
>     Philipp> names. RFC 8259 does not specify how to handle duplicate names, so an
>     Philipp> implementation is free to choose an arbitrary value, merge the values,
>     Philipp> discard the values, or report an error. The presence of a duplicate
>     Philipp> name results in a JSON value without a universally agreed upon
>     Philipp> meaning. This could be exploited by attackers in security applications
>     Philipp> and has been exploited before (as in CVE-2017-12635). The default
>     Philipp> behavior should err on the side of safety and reject duplicate names.
> 
> So letʼs allow strings, keep the default duplicate behaviour as it is,
> and add a variable (not a defcustom) to allow other treatments.

How do we ensure uniqueness if we allow strings?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 10 Nov 2025 10:05:35 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Nov 10 05:05:35 2025
Received: from localhost ([127.0.0.1]:37067 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vIOmE-0001dB-Mz
	for submit <at> debbugs.gnu.org; Mon, 10 Nov 2025 05:05:35 -0500
Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]:42080)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <rpluim@HIDDEN>) id 1vIOmB-0001cO-Fj
 for 79668 <at> debbugs.gnu.org; Mon, 10 Nov 2025 05:05:32 -0500
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-47774d3536dso11358555e9.0
 for <79668 <at> debbugs.gnu.org>; Mon, 10 Nov 2025 02:05:31 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1762769124; x=1763373924; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:message-id:date:references
 :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id
 :reply-to; bh=O2JNeMwelMl4ZBMnIaI6xMzbZ7s+rj0Mpdofyw4HVJY=;
 b=gmc9slgvRl+5DCIbKYxBBupMfZHC33urfnz9gHRM7TMCMUyccLzMZXEeSiIc7KQLQC
 R6EaSAc7T43KNfn5f7WcUrovIae9FR4XSRtaLq9PcNFVIAK29UrtcC7Jie4ckvBpmjpO
 JibtO1n8sMW3eGDTZTKn13psh5o9cwA9LlhXzijUatiPBYG8iAFWu522eje5GQk19h4T
 Dc7gJ/Z8QkI7Lu7JCFGpj6sMHwXkNZ/Q9FhKQvnETwhLCoSJk6i0Xzk/O3mhRL9Tzwaj
 jy17BCKrwZD/2LEyLyC/EssqoE8W79Qykfe9GuT9H7qeR5ij2lzbG3WraLOySvtedqpf
 uOog==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1762769124; x=1763373924;
 h=content-transfer-encoding:mime-version:message-id:date:references
 :in-reply-to:subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to
 :cc:subject:date:message-id:reply-to;
 bh=O2JNeMwelMl4ZBMnIaI6xMzbZ7s+rj0Mpdofyw4HVJY=;
 b=jcysSdQIKPke7MN28asP7bQ6M7uW8o+d4u8Rwcs2mVgVL98su0zjAi9PCIgQI9S/8H
 KXQTe55fK6xQ5QtQtBJQTnFgaQ1Ut+UMgrvs9jVjdIRjXBcSf0pbRW9qdO5Vw6MdmlE9
 33GJYPjc2GkrSvq4gwRggi0VpWgQ/i5ZWnIiCamfVO4joLNz41Ip5tp5eu2gD7yGDtfc
 zBrji6w46vTD23feaA8+rYby8Exx+mPHoDmTz9L2IXQGM3QbefJaNmoWGgx6KXk9KX4A
 9l4Z45JROh1P9BK2f8i2LfVJEKLtv+1RFFIFtks4kUwHB9EHFoPchuxfE/0JzTiiW/CF
 y+bA==
X-Forwarded-Encrypted: i=1;
 AJvYcCW7RTOpcL8jxmlwkr0o/p+TqGxPmMQ3+g+RyzhxA/TS10ADQlWWXuHPpnKOkG0irnbwcf33BA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzQaFZdOUeec3EBEPBb28e3d1nd1Zk2SvQDYIUSb9S33M4/uPiP
 4tmMoe8g0BHfB/MWzXtiw3HmjHYSvNPI7+QH3w+fE+ht4gC+XXM6xE8TptbSmQnk
X-Gm-Gg: ASbGncuEk+bCiF/S7umeqO7pKIz0CsTByDMSqrQp4BM1hd28s/Vd0Sqgvc3z30JslfH
 dyc/PW8reCgWHq1anoaSmE+vpjoZ6LhcaouzGrpMbgcqUz7hYmquy75i5b917YYAtXGWGFrgA74
 StFByCItm+PkEolFDuB4oUVnmKuyVf/UBw7DntKV998/MGkfm/2AKpMjo9I+qPGgnMsiNHD+fzm
 cGaPcTYEaSb2eblpKjmKnFfGmGh9tz2rYLw0WkLyy0oUHllQsltDCy88+E/BDTPKuMz54xwTym1
 Byhe1Y9Ct5nAL7nTIEKk1DdrCe0JMMKS2xlSiquTZ4+7NUytj13hZ4myYsedMfs17kcYqsF4Eor
 a6XWqtMrUchUXCTdqdtsKmHh4twR8RFyK3pWEk86XsNeTg1AFWp22nq0PcyCl15IT8XPpFF8Ixw
 ==
X-Google-Smtp-Source: AGHT+IGHrJuEuT/kZA6oQQEuerAGoIRVLDhzIuBPuz3sxoCicq0S7or8xkY4RcbFhCPBYcnrYSAGJw==
X-Received: by 2002:a05:600c:1c06:b0:475:d9de:952e with SMTP id
 5b1f17b1804b1-47772dc4eb3mr76120885e9.1.1762769124270; 
 Mon, 10 Nov 2025 02:05:24 -0800 (PST)
Received: from rltb ([2a01:e0a:3f3:fb50:be20:80fc:9d5c:7c95])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-47763e170ecsm105286695e9.2.2025.11.10.02.05.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 10 Nov 2025 02:05:23 -0800 (PST)
From: Robert Pluim <rpluim@HIDDEN>
To: Philipp Stephani <p.stephani2@HIDDEN>
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
In-Reply-To: <D6CE90DE-D8A4-4EE0-9D3B-A4CEA71094DE@HIDDEN>
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
 <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
 <875xc7fgql.fsf@HIDDEN>
 <974738F2-77F1-4EDB-B667-62DFA2AD1900@HIDDEN>
 <87tszrdjh9.fsf@HIDDEN> <86tsz47pzv.fsf@HIDDEN>
 <D6CE90DE-D8A4-4EE0-9D3B-A4CEA71094DE@HIDDEN>
Date: Mon, 10 Nov 2025 11:05:22 +0100
Message-ID: <87ldke8aot.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79668
Cc: Eli Zaretskii <eliz@HIDDEN>, 79668 <at> debbugs.gnu.org,
 mattias.engdegard@HIDDEN, Nicolas Martyanoff <nicolas@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

>>>>> On Sun, 9 Nov 2025 22:45:56 +0100, Philipp Stephani <p.stephani2@gmai=
l.com> said:

    >> Am 08.11.2025 um 11:55 schrieb Eli Zaretskii <eliz@HIDDEN>:
    >> Philipp, could you please tell why we insist on rejecting strings as
    >> object keys in JSON serialization?

    Philipp> I don't remember and can't think of a strong reason right
    Philipp> now.  There are good reasons for rejecting duplicate keys
    Philipp> independent of key type (at least by default), see
    Philipp> e.g. the reasoning given for introducing uniqueness
    Philipp> checks in the Go JSON API
    Philipp> (https://go.dev/blog/jsonv2-exp#behavior-flaws):

    Philipp>     =E2=80=A2 encoding/json currently accepts objects with dup=
licate member
    Philipp> names. RFC 8259 does not specify how to handle duplicate names=
, so an
    Philipp> implementation is free to choose an arbitrary value, merge the=
 values,
    Philipp> discard the values, or report an error. The presence of a dupl=
icate
    Philipp> name results in a JSON value without a universally agreed upon
    Philipp> meaning. This could be exploited by attackers in security appl=
ications
    Philipp> and has been exploited before (as in CVE-2017-12635). The defa=
ult
    Philipp> behavior should err on the side of safety and reject duplicate=
 names.

So let=CA=BCs allow strings, keep the default duplicate behaviour as it is,
and add a variable (not a defcustom) to allow other treatments.

Robert
--=20




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 9 Nov 2025 21:46:17 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Nov 09 16:46:16 2025
Received: from localhost ([127.0.0.1]:33125 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vIDEm-00075H-By
	for submit <at> debbugs.gnu.org; Sun, 09 Nov 2025 16:46:16 -0500
Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]:37922)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <p.stephani2@HIDDEN>)
 id 1vIDEj-00074k-WF
 for 79668 <at> debbugs.gnu.org; Sun, 09 Nov 2025 16:46:14 -0500
Received: by mail-wm1-x329.google.com with SMTP id
 5b1f17b1804b1-47776bf5900so319225e9.0
 for <79668 <at> debbugs.gnu.org>; Sun, 09 Nov 2025 13:46:13 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1762724768; x=1763329568; darn=debbugs.gnu.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=9D8MCrGgE2vuxdQE2rfzPg9X+OysgvkBlcaYMYcIjtk=;
 b=EOon8kmvu8J+OJWPl4VHrXa/lsTnf5Evh7D3x9JYXgXKTqnmlE6mw84Sk4CBjV2TaB
 pO86SQnpRC0QCtiRkTOhlwjuREqL1P7esF59ZA/ymvIy44/u3iXfp3brm+pSWXIAia2U
 AA2l/5REkz6n9NmpkZliuUqG3rbqb1K/T1JhpnHCc57lx97TOuy87hlSaMPkuSQAN39P
 dYc97TqRtpd73bbfbwEjZGdSKA67mXzssmlXKat07R4gH5NiZ6zdUUW19WpmjCd/zTtv
 pBspGGqWQ0ACbm2pyMQDyjd5kPz6/XQCY+bPpb+E/BlRU1zijTZ+7z3PyrlOmyjt1gXW
 vIww==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1762724768; x=1763329568;
 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=9D8MCrGgE2vuxdQE2rfzPg9X+OysgvkBlcaYMYcIjtk=;
 b=BNZoqqtSBZQUXQZoBTb4d13GXKolcxPe9dLHpjfjZnsNU29X40CqmF0RHu7Q4nfNPi
 bu1z+Z89yP9mMyYefwiH5j88Sf3Fb77TW/se8Rgklkv5UHDWhMFdeQGPeyhIAEmg8Awc
 rbWcBXVb1bVHeZa1Z7VT4mr7KfcciBP2dkHZcjBnBPE+TskJ3ouEU+rp3I77XwwiDXNO
 zswoVbpehhVlSyIOaj1gkO6eC8LScfgxYTlhsb6R2B0GQZ8jEzgsrGsGoApw4NTJUbW6
 CURVlvXYQ7ZrBT4Apf0xGEJ1GpUqTlwhK2a5XsawuEwfIAgcriS7ekhxsLQlm0a/bnvC
 P7hg==
X-Forwarded-Encrypted: i=1;
 AJvYcCUHe+yByFEl3q6KVJ7kvj5QMgsNyDnjA3L6CwuV+UKB3QvVvXpH21W1V8bZkJfFROXcS3vPYw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwsQ5+Yk2KR90KtcyIy+TGqH/vcaKHvoQ09Ak9gx7ReJmZUhFnd
 DWxDZFc7QHhpy7mu5xedYfS5ofyhgqqLWRu5+ie4wS2/08xqolWvd2sb
X-Gm-Gg: ASbGncu4LgMzycDme3QS4HGRFhNhIi2kXZC2ajSDbv2pI7XpSpg/z+It3PKA68OJWV4
 tF7RWlmGHNYY2jQXoEgMLn7tr148QND/AUSTW4XbrI4MuuTGUMouXlA2cKuxxfAiyRnAjQl1ifW
 DZcsRlIf+SNMUwRCaSnNYHKj/s+x+IEskSdQgdV2gfAAaAJijdMDoqR5YMLm70Qmku7/wJHQvR3
 vq1Gk3FiaJ6KBRo1k0MyU8T+uIB8HVtG2qFQvE8FF/WevfZy+VkKyegh1dcFYo+XiDHROP8tkB/
 xTehEa/JkwWK4RSH3AwsJ++jfkyY1CGQPX0yUpeKyLNc321RbL61f83O0c+puyx1GKZwZIwjOFi
 3ysNCRUk9aKyB7x5h9YMiKo8B+QXM9x7RIYpJ+D4H8xpIYiJv8/IQYsb6M8OncqLaaIE9oSIYSE
 zvZcfhAyJzQQGSgtP3HtoT5qMguvCN0b8V0Zx3g7aNNNzP
X-Google-Smtp-Source: AGHT+IEh7qn05braO7kFwrXwD4VkDMwVZhB2o88+GJFT9WQyIvAnLuwNMWF96vNDIOg+cIuwuT0egA==
X-Received: by 2002:a05:600c:4ed1:b0:477:bb0:5e13 with SMTP id
 5b1f17b1804b1-477732aa00amr25703525e9.8.1762724767560; 
 Sun, 09 Nov 2025 13:46:07 -0800 (PST)
Received: from smtpclient.apple ([2001:a61:3a9a:e01:cde6:56a4:7b37:b652])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4776a953414sm87711535e9.0.2025.11.09.13.46.06
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Sun, 09 Nov 2025 13:46:06 -0800 (PST)
Content-Type: text/plain;
	charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3864.200.81.1.6\))
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
From: Philipp Stephani <p.stephani2@HIDDEN>
In-Reply-To: <86tsz47pzv.fsf@HIDDEN>
Date: Sun, 9 Nov 2025 22:45:56 +0100
Content-Transfer-Encoding: quoted-printable
Message-Id: <D6CE90DE-D8A4-4EE0-9D3B-A4CEA71094DE@HIDDEN>
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
 <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
 <875xc7fgql.fsf@HIDDEN>
 <974738F2-77F1-4EDB-B667-62DFA2AD1900@HIDDEN>
 <87tszrdjh9.fsf@HIDDEN> <86tsz47pzv.fsf@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
X-Mailer: Apple Mail (2.3864.200.81.1.6)
X-Spam-Score: 0.3 (/)
X-Debbugs-Envelope-To: 79668
Cc: mattias.engdegard@HIDDEN, Nicolas Martyanoff <nicolas@HIDDEN>,
 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.7 (/)



> Am 08.11.2025 um 11:55 schrieb Eli Zaretskii <eliz@HIDDEN>:
>=20
>> From: Nicolas Martyanoff <nicolas@HIDDEN>
>> Cc: Nicolas Martyanoff <nicolas@HIDDEN>,  Eli Zaretskii =
<eliz@HIDDEN>,
>>  79668 <at> debbugs.gnu.org,  Philipp Stephani <p.stephani2@HIDDEN>
>> Date: Wed, 22 Oct 2025 17:49:54 +0200
>>=20
>> Mattias Engdeg=C3=A5rd <mattias.engdegard@HIDDEN> writes:
>>=20
>>> 22 okt. 2025 kl. 11.06 skrev Nicolas Martyanoff <nicolas@HIDDEN>:
>>>=20
>>>>> Well if you have special requirements that go a bit outside the =
agreed
>>>>> JSON standard then I'm afraid you are on your own.
>>>> It is not outside the agreed JSON standard.
>>>=20
>>> You misunderstand. It isn't just RFC 8259 but how it is being =
interpreted in practice. JSON-based protocols rarely if ever rely on =
duplicated object keys because JSON codecs cannot be relied on handling =
them properly.
>>>=20
>>> Now it could be that we are wrong about this and there are in fact =
significant JSON protocols where duplicated keys are of importance, but =
then you need to show us some.
>>>=20
>>> Adding an option for disabling uniqueness checks (and accepting =
string keys in alists, these issues are linked) wouldn't be impossible =
but as you understand, we can't just do that on your say-so. We'd want =
to see a clear need for it.
>>=20
>> I am just mentioning the topic just to see if Emacs maintainers might =
be
>> open to a patch. If not, I'll simply go write my own =
parser/serializer
>> to have correct behaviour by default, as I should have done from the
>> very beginning.
>=20
> Philipp, could you please tell why we insist on rejecting strings as
> object keys in JSON serialization?

I don't remember and can't think of a strong reason right now.
There are good reasons for rejecting duplicate keys independent of key =
type (at least by default), see e.g. the reasoning given for introducing =
uniqueness checks in the Go JSON API =
(https://go.dev/blog/jsonv2-exp#behavior-flaws):

    =E2=80=A2 encoding/json currently accepts objects with duplicate =
member names. RFC 8259 does not specify how to handle duplicate names, =
so an implementation is free to choose an arbitrary value, merge the =
values, discard the values, or report an error. The presence of a =
duplicate name results in a JSON value without a universally agreed upon =
meaning. This could be exploited by attackers in security applications =
and has been exploited before (as in CVE-2017-12635). The default =
behavior should err on the side of safety and reject duplicate names.





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 9 Nov 2025 15:19:49 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Nov 09 10:19:49 2025
Received: from localhost ([127.0.0.1]:59240 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vI7Cn-0004VR-G4
	for submit <at> debbugs.gnu.org; Sun, 09 Nov 2025 10:19:49 -0500
Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]:52346)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <nicolas@HIDDEN>) id 1vI7Cl-0004V9-5p
 for 79668 <at> debbugs.gnu.org; Sun, 09 Nov 2025 10:19:48 -0500
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-477549b3082so20105235e9.0
 for <79668 <at> debbugs.gnu.org>; Sun, 09 Nov 2025 07:19:47 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=n16f-net.20230601.gappssmtp.com; s=20230601; t=1762701581; x=1763306381;
 darn=debbugs.gnu.org; 
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=F8iP02EruFsfr9AELHBMr+EogOyUK17r1qsL5hDrtYM=;
 b=zKuZqCIStXNep+aZT++zk3LWcfB/w4R7a+/4RS9iE6IyGc76QTvS9OZLTpAeH6XOxR
 RobXh1nxbXjJ4i1JXNnAAAGKcEM4Q4HPwWe/xfx/cmXtqJz9i9VXkU5h7N2Eu1nhP792
 YdCoySgB7GVqXCsYpTSPZWhXMn9bqfzn48rkmnFqlVNa71aztCnyHe6r5k2p83XEqbMl
 FB29vVCdBrNUm2lhcF9Rlba+HoWBU4IIP1g69nAua/jqIoGOG2lA1KFwiDWywQ9oEtN5
 CJyjbMTsGHF/0YyS4JbsxFZ8jon9o4KBGqk92JHaijZTqNSssXZT4rtcdWTqff87FAZ8
 AATA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1762701581; x=1763306381;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject
 :date:message-id:reply-to;
 bh=F8iP02EruFsfr9AELHBMr+EogOyUK17r1qsL5hDrtYM=;
 b=hcNK0xjlIxDFTvRjrd/4k41cpprbxLw7XCe8mdNPyMmX6149Rrz5mLJ59AjsbcUs19
 kicRNDVsLw25cy3GELw+012lVizQl87dKMlgalzjzrWwoNNoeSZRsMR2uxVO8CZuhf4V
 jD0sHvIhg1PnLfFTSwC5NVzKMvVmu5QSzSTf9JhuOYrApdD462JGeyjVi2aEwUBtwpvT
 IsTVhvajU5VqY/IJ5//4LH2FuQJUNyAvDv8C4K3Ol1dlwMZzhzZ5HQUYro/kcZnIAzXN
 0OiPY85NZzNqh5bfhoKKXgV6BOhYka6SZgRI14sx/iU4dJSMg3NM422WYvDnJsLZM9v1
 1tvQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCUU5+aGm/TLgFDHFfBFdgSMUy1hiEp5nAeHZSkGvHlfppCsPQTHJuqd75trUnL/dUBmbLR1Ow==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxLVlX6lv/jxaUzWUtlqnWA87J9fa0lNJ0krStKdnNR+Y6d5xSM
 GuUWqQ8tc1ffNVAs0zyhYPQbC5DH0QXs9r4JsLIDbRPMsKylb1ONozQFt45wJs1uFSZyjj47VeC
 23N2mEUNshw==
X-Gm-Gg: ASbGncuquytFkAHgx9wjUawgV8DgQuqkYBaZ7ArYfGi/g8rvwTnSGZt5WH0GbIy2ZQB
 lxR077tipdgpATXouy7vnCxOCj+bNKkmO9U89w+6ZJJmPwQn/a2aTW6GA3GAUA1dgr5FqtnEnDl
 VR024EAEppimeaKgb8w7M9dlCuEkbzu7CZvjMfWqazAXVLH6AnDXl1J+EQpmGIYJB0x54JPeb49
 pGR4uBIJEETPi7oz9cdWRHvN3Jy62TkYofsQGMJcnmDB3+2RymkTa+UfLaHq3xF+pJ1JHAKQKSw
 CekSliIDJbOgAXN/0pkIs1dQFCksm6AKkLdMtc9iGR8bBRH6McYM3jQV/VpTzRGOZrqsPDh0q+u
 B54IYzxDlDq/h10kTiK0rHBvmye6dO0t+4Aylx2QIouxD0uUcIZ8NUsjfDM9nRSd5dxEACt5WY4
 vhyRNvIEgjbIQa4Deqc7mzA/R/w4j/m8iR2LEMLhyzk/D1HA1OqSFCx1cHo/q7H9n5
X-Google-Smtp-Source: AGHT+IGE/Rs+y6BTtd14Ejb5T7lD46FoCRJdOtCdXjlQXIxp0OJTlbTvmd5zn6iJJqfqGX8pePqlCw==
X-Received: by 2002:a05:600c:3105:b0:471:14f5:126f with SMTP id
 5b1f17b1804b1-477732892a9mr46770975e9.33.1762701580338; 
 Sun, 09 Nov 2025 07:19:40 -0800 (PST)
Received: from valhala (2a01cb040ec9e60097860c4c71a390d6.ipv6.abo.wanadoo.fr.
 [2a01:cb04:ec9:e600:9786:c4c:71a3:90d6])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4776d39c8f8sm146014495e9.3.2025.11.09.07.19.39
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 09 Nov 2025 07:19:39 -0800 (PST)
From: Nicolas Martyanoff <nicolas@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
In-Reply-To: <86tsz47pzv.fsf@HIDDEN> (Eli Zaretskii's message of "Sat, 08 Nov
 2025 12:55:32 +0200")
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
 <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
 <875xc7fgql.fsf@HIDDEN>
 <974738F2-77F1-4EDB-B667-62DFA2AD1900@HIDDEN>
 <87tszrdjh9.fsf@HIDDEN> <86tsz47pzv.fsf@HIDDEN>
Date: Sun, 09 Nov 2025 16:19:38 +0100
Message-ID: <877bvzz111.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79668
Cc: p.stephani2@HIDDEN, mattias.engdegard@HIDDEN,
 Nicolas Martyanoff <nicolas@HIDDEN>, 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:


> Philipp, could you please tell why we insist on rejecting strings as
> object keys in JSON serialization?

If it helps, here is an almost complete patch that add support for
object strings:

https://github.com/galdor/emacs/commit/5a89d20db6e54e83036b1beb174c442acd0744ea

The only problem I have is with symset_hash is that only works for
symbols.

It is really strange that the serializer would have extra code to
enforce key unicity when this is not a JSON requirement (decoder
behaviour for duplicate keys is implementation defined, so the user
should absolutely be able to emit duplicate keys), but it is what it is.

I'm not sure having a hash table reimplemented just for this module
makes sense, but again I have no experience with the C parts of Emacs.

If someone gives me a hint on how to make symset_t work for both symbol
and string objects, I'll happily add tests and submit the patch.

Best,

-- 
Nicolas Martyanoff
https://n16f.net
nicolas@HIDDEN




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 8 Nov 2025 10:55:45 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Nov 08 05:55:45 2025
Received: from localhost ([127.0.0.1]:50981 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vHgbg-0002Y8-Qv
	for submit <at> debbugs.gnu.org; Sat, 08 Nov 2025 05:55:45 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:54068)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vHgbe-0002Xy-3E
 for 79668 <at> debbugs.gnu.org; Sat, 08 Nov 2025 05:55:43 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1vHgbY-00018h-4R; Sat, 08 Nov 2025 05:55:36 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=twVEPwHx/C0SK1ntft1hHd4GUvAZDvwTVu/txwdcm8o=; b=giRyJCKQc/uogyKsTSIG
 vm4n3oQxIUB5CRWlMIRK1e39OvgXo+kLURy2IB26ImPVIAk7v/1JHXiCcOhAH7K2SZotBJUCfoVN7
 qCwQ7CQQoV7qWnNnlGpZIoZW+ssID3AE7l4SnJKyjCE6gcsAiqAcpivRLtCswVloZkOqQVv+zF5/M
 YREcVdT/oPWFHns6s5mL4ZaBTNK1uKWp1JiDIoufO2fULV9DqvEvDSFWD3YgD04Rs4euI6NUt8AVK
 vepKBpc8iG4/qJ8wTBTM8vbkmIQzHKZsvFF/u5Qj0s0Ke8zvZVIXfhAsddH2xyC/L3JENjOgoKRvp
 WnU9ETqA47mhAw==;
Date: Sat, 08 Nov 2025 12:55:32 +0200
Message-Id: <86tsz47pzv.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Nicolas Martyanoff <nicolas@HIDDEN>, p.stephani2@HIDDEN
In-Reply-To: <87tszrdjh9.fsf@HIDDEN> (message from Nicolas
 Martyanoff on Wed, 22 Oct 2025 17:49:54 +0200)
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
 <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
 <875xc7fgql.fsf@HIDDEN>
 <974738F2-77F1-4EDB-B667-62DFA2AD1900@HIDDEN>
 <87tszrdjh9.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79668
Cc: mattias.engdegard@HIDDEN, nicolas@HIDDEN, 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Nicolas Martyanoff <nicolas@HIDDEN>
> Cc: Nicolas Martyanoff <nicolas@HIDDEN>,  Eli Zaretskii <eliz@HIDDEN>,
>   79668 <at> debbugs.gnu.org,  Philipp Stephani <p.stephani2@HIDDEN>
> Date: Wed, 22 Oct 2025 17:49:54 +0200
> 
> Mattias Engdegård <mattias.engdegard@HIDDEN> writes:
> 
> > 22 okt. 2025 kl. 11.06 skrev Nicolas Martyanoff <nicolas@HIDDEN>:
> >
> >>> Well if you have special requirements that go a bit outside the agreed
> >>> JSON standard then I'm afraid you are on your own.
> >> It is not outside the agreed JSON standard.
> >
> > You misunderstand. It isn't just RFC 8259 but how it is being interpreted in practice. JSON-based protocols rarely if ever rely on duplicated object keys because JSON codecs cannot be relied on handling them properly.
> >
> > Now it could be that we are wrong about this and there are in fact significant JSON protocols where duplicated keys are of importance, but then you need to show us some.
> >
> > Adding an option for disabling uniqueness checks (and accepting string keys in alists, these issues are linked) wouldn't be impossible but as you understand, we can't just do that on your say-so. We'd want to see a clear need for it.
> 
> I am just mentioning the topic just to see if Emacs maintainers might be
> open to a patch. If not, I'll simply go write my own parser/serializer
> to have correct behaviour by default, as I should have done from the
> very beginning.

Philipp, could you please tell why we insist on rejecting strings as
object keys in JSON serialization?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 22 Oct 2025 15:50:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Oct 22 11:50:11 2025
Received: from localhost ([127.0.0.1]:57403 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vBb6J-0007CW-6z
	for submit <at> debbugs.gnu.org; Wed, 22 Oct 2025 11:50:11 -0400
Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]:57350)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <nicolas@HIDDEN>) id 1vBb6A-0007Bi-BB
 for 79668 <at> debbugs.gnu.org; Wed, 22 Oct 2025 11:50:08 -0400
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-4711825a02bso47160735e9.2
 for <79668 <at> debbugs.gnu.org>; Wed, 22 Oct 2025 08:50:02 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=n16f-net.20230601.gappssmtp.com; s=20230601; t=1761148196; x=1761752996;
 darn=debbugs.gnu.org; 
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=9WX66zL/uNEQO85EVaUyNvAXLw9u3m5nt4TEUOpLVOM=;
 b=qQJg+C125wAVqc9fWW5/COyuj8NUQkj0/o3RdawQryPt1n8R3kL7XGtBgE3sC7+YX6
 u+uyrLn6mop59WAtnlAAsetVme88t6JSpL7GPB0bRsgunuhX5cg68yu1u+NbWkJB/EGF
 rowMMy6/xLUZfPKxhLaqjuX5bUT9lNTTs790Y/hr6PJ4IEko92592vRg7tvBgycPdd7b
 h7fJFa9GXj/TWds6GRxMV+FlisAqr7nySKa82jHfRV2XXo54ziKH0qDhq3Uv7UJG6saU
 U97qmBw0VhFNP9fEtmwdGthfCVPVNdQh7IWV4Bp09cP7DSaviOOWoAAAajc8BvdoGhpm
 dijg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1761148196; x=1761752996;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=9WX66zL/uNEQO85EVaUyNvAXLw9u3m5nt4TEUOpLVOM=;
 b=CSgt6FpD9gdwYYOrpIJhwBBpQ6IMMWECFQPomxrsKYhoNl6Cqa7xc8ub+ro4ucCl1d
 ep9bCb6UpyocnsWwekjPW5kh+HboDmS6SfSTn1mOM2ImnOx1YMsnBad9EDVDXbSIYGo3
 rY6CCwcQaeKipW3t5gvF2xAp9MWqzrPbQkiP6g5qdN15HJr5ogiJctfuJ1XE83MqVZP0
 byidT5V8E7MtN7R9IIX8UHbQOlw/boB+OMyPJgZrxtb5OfVONQ5e11WgGfu3EG9QOtKP
 55tt3Wm0S3ww81gmSYJNuX37AbVhDbLXjSp8kAIXjzFJ9fxHa8F65K4slYELG6I9gKjz
 egsA==
X-Forwarded-Encrypted: i=1;
 AJvYcCWkTi+9REgtjhITW7LDEqQjCePfYLemuexwXb2uvvuqcfogoQGhvM5DGd5YsYdcnM2WggPCjA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwOkRjdBjME26mlKFq1fEzqZb3i66bMka9HlULWUgwzuS9sfB9r
 woQ9OwiGwLug2pFjyfarWTo8DPA427wkPwvoDyPrd/7Gw7bem7l6SEKBbT3+ENg1NN4=
X-Gm-Gg: ASbGnctaXAu8mgQ49uYWs9+RtYB8JmbD/P9/vQEZBrX8nX5OPX379h23dEzd8l6/c83
 xd2jKmWDK7IeJaYq5idM9fMCYgzMXKaJ8F9Vj/bZpBzCzCbl/42XcTiVg/eGc9aUXsnF+j90T8d
 fpZX1m5L52yuee1jbkhaTwqRD9LAuig89nMBwAkgVgbgAmMFMEd5I/ZiRDiH1qT4INpkHHMRkte
 ucd94ZRrezPuds/qKPGWOBuZR5Qf6M51QY4nmnolj2MSol+3Nf2QDTXeHD5wga+3TY7xg46YZqR
 a00nwQRJTPADgJo4Pmlsqyp73EDrmrMjxnuBNwlxG8GwPfNFPQ/MR1ypJ42Kd3o+2ssybmL9iQW
 l1UCZ89689NoXOIU4wjrvEn6Q1rlNhORXOfMxTYcIBGququ+wUiwb8t43jpEPL5ESJ76MlEwQH0
 tVTigkcU9VtTXFwn5wZK+op/pIZDrJxZJMMgPzNUNNXPvoROWJ7iLt
X-Google-Smtp-Source: AGHT+IGFAOCHKoEcAompjf6U9oACAya+mBAdacs7v8V31U0iBr5FfoCtSpsnSho65QNwz49IVfgFrQ==
X-Received: by 2002:a05:600c:350b:b0:46e:19f8:88d8 with SMTP id
 5b1f17b1804b1-4711791cd8fmr201889685e9.34.1761148195591; 
 Wed, 22 Oct 2025 08:49:55 -0700 (PDT)
Received: from valhala (2a01cb040ec9e60097860c4c71a390d6.ipv6.abo.wanadoo.fr.
 [2a01:cb04:ec9:e600:9786:c4c:71a3:90d6])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-427ea5a0e9csm25846349f8f.5.2025.10.22.08.49.54
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 22 Oct 2025 08:49:55 -0700 (PDT)
From: Nicolas Martyanoff <nicolas@HIDDEN>
To: Mattias =?utf-8?Q?Engdeg=C3=A5rd?= <mattias.engdegard@HIDDEN>
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
In-Reply-To: <974738F2-77F1-4EDB-B667-62DFA2AD1900@HIDDEN> ("Mattias
 =?utf-8?Q?Engdeg=C3=A5rd=22's?= message of "Wed, 22 Oct 2025 17:43:05
 +0200")
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
 <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
 <875xc7fgql.fsf@HIDDEN>
 <974738F2-77F1-4EDB-B667-62DFA2AD1900@HIDDEN>
Date: Wed, 22 Oct 2025 17:49:54 +0200
Message-ID: <87tszrdjh9.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79668
Cc: Philipp Stephani <p.stephani2@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>,
 Nicolas Martyanoff <nicolas@HIDDEN>, 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Mattias Engdeg=C3=A5rd <mattias.engdegard@HIDDEN> writes:

> 22 okt. 2025 kl. 11.06 skrev Nicolas Martyanoff <nicolas@HIDDEN>:
>
>>> Well if you have special requirements that go a bit outside the agreed
>>> JSON standard then I'm afraid you are on your own.
>> It is not outside the agreed JSON standard.
>
> You misunderstand. It isn't just RFC 8259 but how it is being interpreted=
 in practice. JSON-based protocols rarely if ever rely on duplicated object=
 keys because JSON codecs cannot be relied on handling them properly.
>
> Now it could be that we are wrong about this and there are in fact signif=
icant JSON protocols where duplicated keys are of importance, but then you =
need to show us some.
>
> Adding an option for disabling uniqueness checks (and accepting string ke=
ys in alists, these issues are linked) wouldn't be impossible but as you un=
derstand, we can't just do that on your say-so. We'd want to see a clear ne=
ed for it.

I am just mentioning the topic just to see if Emacs maintainers might be
open to a patch. If not, I'll simply go write my own parser/serializer
to have correct behaviour by default, as I should have done from the
very beginning.

--=20
Nicolas Martyanoff
https://n16f.net
nicolas@HIDDEN




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 22 Oct 2025 15:43:24 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Oct 22 11:43:24 2025
Received: from localhost ([127.0.0.1]:57386 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vBazj-0006u0-Hq
	for submit <at> debbugs.gnu.org; Wed, 22 Oct 2025 11:43:23 -0400
Received: from mail-lf1-x12b.google.com ([2a00:1450:4864:20::12b]:48285)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <mattias.engdegard@HIDDEN>)
 id 1vBaza-0006tJ-Bz
 for 79668 <at> debbugs.gnu.org; Wed, 22 Oct 2025 11:43:20 -0400
Received: by mail-lf1-x12b.google.com with SMTP id
 2adb3069b0e04-592f098f7adso603495e87.0
 for <79668 <at> debbugs.gnu.org>; Wed, 22 Oct 2025 08:43:14 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1761147787; x=1761752587; darn=debbugs.gnu.org;
 h=to:references:message-id:content-transfer-encoding:cc:date
 :in-reply-to:from:subject:mime-version:sender:from:to:cc:subject
 :date:message-id:reply-to;
 bh=11jM0UygGZ/IEQLhBR8G6hOE3ZP5crdWdA/v56pAQqQ=;
 b=jsyCMJ34eCPRSfF9AzHsNkihQTzqdO+vriB4zHOqE12ZXsYrQOrcOXdjZV7LesDcdU
 0L8QOdH6WreQAwWhpdQ4lTecg9NVDqILaAfsO1LLg+c1K5Uw2IMwjo64OaT2mMOdYtBK
 c1tsdiW6i+kqP3XYvzwunXJ2dhIy3OuG9z+D7tE/urTq2f7ilMRDPk8+y19GJ7+fKQwY
 CMiOZ3qg4at48pCB9BW+9TbrIhVpZImcmOeZ8VLKw7umtInuajHgvki1VR8s/B1DU0kF
 6heGyCiGaOEnmOwMYf4IWS5B2I22lFtosvsHAbrmsxY3LbKdEbbCDGUG143nxjd1EBgu
 ODgQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1761147787; x=1761752587;
 h=to:references:message-id:content-transfer-encoding:cc:date
 :in-reply-to:from:subject:mime-version:sender:x-gm-message-state
 :from:to:cc:subject:date:message-id:reply-to;
 bh=11jM0UygGZ/IEQLhBR8G6hOE3ZP5crdWdA/v56pAQqQ=;
 b=iz4ciKkoV7MUHS02D+rLEfssW3IdCkw0Up0G94srEi5iIcEtlT19PsXcTx/WWHKAYZ
 +Yf2coE88wcT9twDjeg/+ilMQydUPrSpwSXPUKwFbR+L035VIGdCTFm6Wawr60WLZdg/
 HgI+DWycitwJXzsFZfFNDaJKeMjNRJ1+cNGfIqUShX4MCOhBweJaSLnGI7GwpMSTtruK
 DQNjcGO5lYYgh6ksl/sSCKJBMG0Ij+2QCq2fR3nvxGicRcOYp53G/ih0iHeJqnqYGuxO
 KLYx2bCW6Oz8ZXGsDxwj0iyWgy4GeO7ZnrMogNi+yyMjEyI7efI4PqmREl7TuVj389Tz
 LUIA==
X-Forwarded-Encrypted: i=1;
 AJvYcCUDg/qwATfpjb9wcorjYDcWB94ekvdvp6xOSCCYdMTO9dL7JtmdEEDac6Bp1FNRtjWcGJNExA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwVOHh6IGDplH5SsCC8Qe1EpgvBbGq23pm0is48zHaMRf69sACq
 vizHcUqmIE3zG6LcnzsKgVk/bqBLtNerkEthyTWX/5XRjxIfqxrJZLBo
X-Gm-Gg: ASbGnctU/sFADR24X5AjlcgEs/4CxuDWp3k1gb/hyAdyhHSpiTyO4/6rXwRvB07W7Fw
 aKivaU6Oeq7RS4i7GyEDtyrrkVZ1/wcu4LJUeEB2yTR2oBEiquMU6csOspJM68JSGZ+YiLogpbs
 2M6eFs4nz/fgtPYWkr8CiEX1RqkvObXBv8zLqSxVTZtK0s0La7eKpg+9beVxVqNv8RoRUKoW7Tp
 hXiv2m1p7ltqdhG7a+XNLmkcwnwGhi+jWwtYGg/66oJYk2VUB031zkBkjX0UZ5Q9EpyDs6Tv+Ni
 DoV8Eb8RroMgvK6xSywWPYBf2YvZ8t0/dV4+v5yL+dkKLO7kZuxe2g1eo1t7WnMMCLQB/mBfOTT
 Zvd3KLZMFTZT1TZltexTbBDUgSDb9kiEWCjmkEJZjGIP1OFt+bXGUqAJTlJuMDjHcNQ5TA+wcx+
 qVn8yYAk3CTOaIoYs0J/NahOmJ9BwPy4aYMu9msSYSbwHCAS5sfrO4BjDNrTgfAwS1Ag==
X-Google-Smtp-Source: AGHT+IEu2yAXvFFbdD35SLf71zqdghEBXQ2Dgg0I8YETEb/T+WkZA7ElVvWluDDp3FCx0HrXvBqq3w==
X-Received: by 2002:a05:6512:3ca9:b0:55f:71ed:b0da with SMTP id
 2adb3069b0e04-591d8591b12mr7248939e87.55.1761147787268; 
 Wed, 22 Oct 2025 08:43:07 -0700 (PDT)
Received: from smtpclient.apple (c188-150-186-155.bredband.tele2.se.
 [188.150.186.155]) by smtp.gmail.com with ESMTPSA id
 2adb3069b0e04-591def268casm4762029e87.104.2025.10.22.08.43.06
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 22 Oct 2025 08:43:06 -0700 (PDT)
Content-Type: text/plain;
	charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.120.0.1.15\))
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
From: =?utf-8?Q?Mattias_Engdeg=C3=A5rd?= <mattias.engdegard@HIDDEN>
In-Reply-To: <875xc7fgql.fsf@HIDDEN>
Date: Wed, 22 Oct 2025 17:43:05 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <974738F2-77F1-4EDB-B667-62DFA2AD1900@HIDDEN>
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
 <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
 <875xc7fgql.fsf@HIDDEN>
To: Nicolas Martyanoff <nicolas@HIDDEN>
X-Mailer: Apple Mail (2.3654.120.0.1.15)
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79668
Cc: Eli Zaretskii <eliz@HIDDEN>, Philipp Stephani <p.stephani2@HIDDEN>,
 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

22 okt. 2025 kl. 11.06 skrev Nicolas Martyanoff <nicolas@HIDDEN>:

>> Well if you have special requirements that go a bit outside the =
agreed
>> JSON standard then I'm afraid you are on your own.
> It is not outside the agreed JSON standard.

You misunderstand. It isn't just RFC 8259 but how it is being =
interpreted in practice. JSON-based protocols rarely if ever rely on =
duplicated object keys because JSON codecs cannot be relied on handling =
them properly.

Now it could be that we are wrong about this and there are in fact =
significant JSON protocols where duplicated keys are of importance, but =
then you need to show us some.

Adding an option for disabling uniqueness checks (and accepting string =
keys in alists, these issues are linked) wouldn't be impossible but as =
you understand, we can't just do that on your say-so. We'd want to see a =
clear need for it.






Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 22 Oct 2025 09:29:36 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Oct 22 05:29:36 2025
Received: from localhost ([127.0.0.1]:55181 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vBVA0-0006T5-0V
	for submit <at> debbugs.gnu.org; Wed, 22 Oct 2025 05:29:36 -0400
Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]:53327)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <rpluim@HIDDEN>) id 1vBV9x-0006Se-0q
 for 79668 <at> debbugs.gnu.org; Wed, 22 Oct 2025 05:29:34 -0400
Received: by mail-wr1-x42a.google.com with SMTP id
 ffacd0b85a97d-426ff694c1fso1640923f8f.2
 for <79668 <at> debbugs.gnu.org>; Wed, 22 Oct 2025 02:29:32 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1761125366; x=1761730166; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:message-id:date:references
 :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id
 :reply-to; bh=h9/sPlVhw3+u/uW3134dJCcbGwryQqNtbcvcBhrUPfc=;
 b=d7BS4LBv4zzyGb1e0uh0sQSV6OttE95VLISfHr8dwVTfiEmGjUNTfEyC+R4CjCT/ph
 zR4JA+mQARpzvfiQRZS52+RDCknrwf3o308jLjnwSJWnpbJ4gSj4D9d5oazoV6hKejXc
 vS72F4dXmlMOd59ZdsqbBVbRbcC+R8JA6SvFRfMk9X/r03J/Kl959bGX0G8uYpRa+qAf
 Aj1NPvPfV0ad3/wkX/OYGMhn+/pCXCQ1NnlAD6CBr2ESpMCqQFJAsbUoGDOJhfsD55N4
 /cO/FUMRoU94GO0rqgyVD/O2rsAwLHrl3rd8Z8/OTQUWEv4hZNM5rXOgAZ1UbTLryAaH
 fv6Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1761125366; x=1761730166;
 h=content-transfer-encoding:mime-version:message-id:date:references
 :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc
 :subject:date:message-id:reply-to;
 bh=h9/sPlVhw3+u/uW3134dJCcbGwryQqNtbcvcBhrUPfc=;
 b=OTVWwLX0BzY2u/zDoxu+vnLQisQYhDqX8z18p8CqHuWdPxGFJs4/eaF5naIGl5LWbj
 97zgM+UnidgXyqmqgzUiDM+RC5G3NAyT9Smz0V2TbCyNjpVjV4vnX/iygAxtORE9PyEm
 WWvcGD7JrbICCqzfzcHhP+AvgkNThHZXiH5mSldoIsS5ga7cjBn9AOGiRdtG9nXRYuUI
 W0PfC7HaCw9LvkOUObomMnoF0NarsBgoOMe/wS2e8lAZ9aWNX7Hhqc4iH8Kl2K/r5lY6
 4fUO8YIa+cJ1rLVBlltmv3qAuDYToxKVYdSAS7RohAeOqmiEJWgT2BHrJ4eEe/WasN43
 NNHQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCWz/vIwyPbmXTxYOIo5JQSA+8qbkjVwilcSsIu2/KGFmw7esQHuFnd+V8ewd1IlQyX5Ebjplg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Ywpn9dZc04DC4MJ0XQcn92N9rbbpgRzEhmBM8cohJOXN2EpX7Pt
 /cCMIJeZ3xkmvYjArioX3StCE4iXJI9OJlYFwntnSXW+9xunu2mz9gmSSIQEH/RH
X-Gm-Gg: ASbGncsfdyWAFhv0MEroABgd6EsuqcZ+NDAWC0OGNGPoSE+0U1AaYS2ydcpfP32c5sJ
 OhvQCtCCsQEq1MN6IQgAJbnxv/hjgR6zDkASnL/afIqwXOSZ9zfWvnJ+QQTCMPEz+ov4OVL1Tl0
 q0A5AAx38G0I3qXzWog8Gqd5IBkDDkWKyEp++0h6Z0xDomLZOLkgOpTY+m78KJuvqaNOcVIQSLQ
 jp6DCcPxLzwE1F6+KbTRzcgnDlRTwoh/OYoj70qnSB3VNltMhC48HDm2O2r70Mv7Fj4W5OLMaOk
 3eKqEvohaREPIuJoiThzz04c1Go6tnVICo5uIjjuU3eeqw3JqbKeZFaUncrfl0254sXCzAPMsnF
 4TOco8+3lLhFrr/TJiGsrEb2C7bM2/K99uVx9xBN90ZDWK/rXWG09kUFdNDMlGKM=
X-Google-Smtp-Source: AGHT+IGRJHVHlmRE5+8f/AOqzOS0KnE4VboJuo0pdcHzl6BcBoIBfEDm6gv20q/IGGh+Cy2+rmNZEQ==
X-Received: by 2002:a5d:5f42:0:b0:428:3b55:21f5 with SMTP id
 ffacd0b85a97d-4283b55245amr11475474f8f.60.1761125366362; 
 Wed, 22 Oct 2025 02:29:26 -0700 (PDT)
Received: from rltb ([2a01:e0a:3f3:fb50:45ed:2a50:e9e9:fa3e])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-427f009a78csm24386019f8f.26.2025.10.22.02.29.25
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 22 Oct 2025 02:29:26 -0700 (PDT)
From: Robert Pluim <rpluim@HIDDEN>
To: Nicolas Martyanoff <nicolas@HIDDEN>
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
In-Reply-To: <875xc7fgql.fsf@HIDDEN>
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
 <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
 <875xc7fgql.fsf@HIDDEN>
Date: Wed, 22 Oct 2025 11:29:25 +0200
Message-ID: <87bjlzwah6.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79668
Cc: Mattias =?utf-8?Q?Engdeg=C3=A5rd?= <mattias.engdegard@HIDDEN>,
 Eli Zaretskii <eliz@HIDDEN>, Philipp Stephani <p.stephani2@HIDDEN>,
 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

>>>>> On Wed, 22 Oct 2025 11:06:10 +0200, Nicolas Martyanoff <nicolas@n16f.=
net> said:
    >> The uniqueness check has been there since the API was introduced; if
    >> we dropped it, there is a risk that code relying on it would misbeha=
ve
    >> or leak information.

    Nicolas> This is what options are for. But my points was not that it sh=
ould be
    Nicolas> changed, it was that there was no reason not to accept strings=
 as object
    Nicolas> keys for serialization. If it impacts performances because of =
this
    Nicolas> check, that's on the developer who decided to use strings (as =
it should
    Nicolas> be).

The current behaviour is "first symbol wins". I can see people wanting
one of

- first symbol wins
- last symbol wins
- produce duplicate entries

Allowing strings as keys doesn=CA=BCt seem like too much of a
burden. Although we could add a user option for that as well.

Robert
--=20




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 22 Oct 2025 09:06:21 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Oct 22 05:06:21 2025
Received: from localhost ([127.0.0.1]:55095 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vBUnU-0005D7-TU
	for submit <at> debbugs.gnu.org; Wed, 22 Oct 2025 05:06:21 -0400
Received: from mail-wr1-x430.google.com ([2a00:1450:4864:20::430]:54664)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <nicolas@HIDDEN>) id 1vBUnS-0005Cr-GF
 for 79668 <at> debbugs.gnu.org; Wed, 22 Oct 2025 05:06:19 -0400
Received: by mail-wr1-x430.google.com with SMTP id
 ffacd0b85a97d-4283be7df63so2037664f8f.1
 for <79668 <at> debbugs.gnu.org>; Wed, 22 Oct 2025 02:06:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=n16f-net.20230601.gappssmtp.com; s=20230601; t=1761123971; x=1761728771;
 darn=debbugs.gnu.org; 
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=EBgXJt9CrSWsvxfBskejQ9T+9LvjUh/1+0rZEU68V4k=;
 b=UxfO2pZ+Y9SGRXEaa7Wr5v2FQQ8NwKuyCoBdMe2tNFX8plRsCwW0W+ii9fNOo1IJtB
 cukA4vaza6iMR8EXURpS3U0MwO5cUK2UaAalgknXqP4n4w+fy+7NRn0JSj8swEdvFqds
 11AYJur32ksVh+UItWtb3OoSiqNzcjM+iTrf7o/3+o7TUAjFS4QlKnp/hsBZTSVeCTtL
 RXxNXmY9oeTlo6t7lXLAwBrgMyTbzP24OMwmHuhzrUnzL4ztJ4J6lx2y6m7fpLR/gZkh
 b9N/eb7QbM7qJe5uGX6lGr1zR2Un8zy+tw595XyJfRHmDBVcev0s/vJxo+QQq29NiIez
 SRKw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1761123971; x=1761728771;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=EBgXJt9CrSWsvxfBskejQ9T+9LvjUh/1+0rZEU68V4k=;
 b=qqX2Hom30EuGxLZpfX2cAhHqj93QscrcmjcXjSCP4s93epgXyfwDl40x80lCGVEvJi
 5ewnJDHkwoS6knaMmad7UDazeTuU7wt2A4xaS4Cxh6BLFrx6nSDTtFS6kutqYxhAvTLL
 oab5fUj/uOgbb4HUFTJeO/U5VkdfecOAgOGykHf/aFptNr+FeWQnpkee6PilLqT/ejez
 sM41kfNhYG+SV9+AvaBh3NJ/X1WyHO9XmWRyyt8P2d5C/QfTqIt/mcOV6qpK2bcyv3Df
 b1Rrxt5qRaYcMco9h+iJEE5BsevpQElKvz0M4HR+H6/vzJvv2RJrvA+FdWEyfZX1w+O6
 NAvQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCXdrU6xIm1LqECiTFJie0Qvq2OgeYSlKcjLhAaRC15tyUB9kh0C0I8MNIbDET7BQ+fnfnmA0Q==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzIQ1cE9asMnSsa8SxP7sZpRa7CIu1FyEvz6Hw5N2Sb5MGl2p1t
 Mg6czY6Ksbcs0Q8x07ooVQd1JiZm3Ie37YbgwXmsp6NR/eLL65alnJFwURAtD11QJ4pAdla7saF
 2LN5cN6/nYQ==
X-Gm-Gg: ASbGnctxG7LpOKh0faX0TCCTsBVZ23u7hB6e8yQw04evDa0oHQqQ+eJzJe+Oj+b5pKf
 n357mpQRL/Mg7FJDdBbN4YGCwodal/alzI0qErxraxb0yiWRd/yfNhcfnOv6TJc5sAIydy/kPcq
 Q38A4N4nCjbkCMs59A5RZoPPp7VIO7dBdKeYkoOGnKtjTEV0GVZcR9KV6J1koUAVetmsK4eiUva
 QgUdhenjFrH9kg8usbbb5QFwstHJ3FpZPKM7AJzfB0CafGUkCwNBevrx2a3EO2giofNoQ27TwT/
 jU74p8uEdWpyLsPozuS8/NEsb3derdTbJogU6qN1/qJzMWQu63htkKLrIjuF0qhABKconKVtm9z
 KsxgIVBiWf/ctYuKEEXMKQvxRr+QzFLT+h9zic/xxwzGdiP4xH5PpwBGpz1Cn4soYkAEMUBczYZ
 LYNEynk47sVVYzKVfsbG8RuFT5N//0LgAf9q9roK2HhujrPCUqbzpt
X-Google-Smtp-Source: AGHT+IE7xYAu/UO7Y/6eGuA0BqpwFN0s1xgbmH0iBp0Fexw8Nwa5q3HchW8QrchQ2lnvFw/EQBSyPw==
X-Received: by 2002:a05:6000:186f:b0:425:86ca:989 with SMTP id
 ffacd0b85a97d-42704d79a91mr14050298f8f.23.1761123971305; 
 Wed, 22 Oct 2025 02:06:11 -0700 (PDT)
Received: from valhala (2a01cb040ec9e60097860c4c71a390d6.ipv6.abo.wanadoo.fr.
 [2a01:cb04:ec9:e600:9786:c4c:71a3:90d6])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-427f00ce08asm24135194f8f.44.2025.10.22.02.06.10
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 22 Oct 2025 02:06:10 -0700 (PDT)
From: Nicolas Martyanoff <nicolas@HIDDEN>
To: Mattias =?utf-8?Q?Engdeg=C3=A5rd?= <mattias.engdegard@HIDDEN>
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
In-Reply-To: <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN> ("Mattias
 =?utf-8?Q?Engdeg=C3=A5rd=22's?= message of "Wed, 22 Oct 2025 10:48:48
 +0200")
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
 <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
Date: Wed, 22 Oct 2025 11:06:10 +0200
Message-ID: <875xc7fgql.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79668
Cc: Philipp Stephani <p.stephani2@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>,
 Nicolas Martyanoff <nicolas@HIDDEN>, 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Mattias Engdeg=C3=A5rd <mattias.engdegard@HIDDEN> writes:

> 21 okt. 2025 kl. 22.34 skrev Nicolas Martyanoff <nicolas@HIDDEN>:
>
>> The fact that the JSON parser produces symbols by default is another
>> problem on its own.
>
> The JSON parser produces hash tables with string keys by default.

Hash tables yes. But with alists, it produces symbols:

ELISP> (json-parse-string "{\"a\":1}" :object-type 'alist)
((a . 1))

Which is inconsistent (and a bad idea). Obviously this cannot change
because backward compatibility, but it would not be ridiculous to have
an :object-key-type key argument.

>> I really would not want a JSON serializer to enforce object key
>> uniqueness for me
>
> Well if you have special requirements that go a bit outside the agreed
> JSON standard then I'm afraid you are on your own.
It is not outside the agreed JSON standard.

As per RFC 8259 section 4, "When the names within an object are not
unique, the behavior of software that receives such an object is
unpredictable". The rest of the section is very clear: behaviour is
implementation defined, not invalid.

> The uniqueness check has been there since the API was introduced; if
> we dropped it, there is a risk that code relying on it would misbehave
> or leak information.

This is what options are for. But my points was not that it should be
changed, it was that there was no reason not to accept strings as object
keys for serialization. If it impacts performances because of this
check, that's on the developer who decided to use strings (as it should
be).

--=20
Nicolas Martyanoff
https://n16f.net
nicolas@HIDDEN




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 22 Oct 2025 08:48:59 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Oct 22 04:48:59 2025
Received: from localhost ([127.0.0.1]:55052 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vBUWh-0004F4-8H
	for submit <at> debbugs.gnu.org; Wed, 22 Oct 2025 04:48:59 -0400
Received: from mail-lj1-x236.google.com ([2a00:1450:4864:20::236]:50456)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <mattias.engdegard@HIDDEN>)
 id 1vBUWe-0004Ef-Mo
 for 79668 <at> debbugs.gnu.org; Wed, 22 Oct 2025 04:48:57 -0400
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-3717780ea70so72213661fa.1
 for <79668 <at> debbugs.gnu.org>; Wed, 22 Oct 2025 01:48:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1761122930; x=1761727730; darn=debbugs.gnu.org;
 h=to:references:message-id:content-transfer-encoding:cc:date
 :in-reply-to:from:subject:mime-version:sender:from:to:cc:subject
 :date:message-id:reply-to;
 bh=HwFi+n9DN89Qb+S5di79/dpnmIH+fFYqRO5QDyr1aI8=;
 b=f2Hr0AP4NrsYANsfhi5BszTDnJo8HO5L4R2DXrTjEacoGNKi4Qfe3TiuaeDVvrGy4m
 tFSn820AUaBBJsMTuj8uDvDiTxz1C102V4VQLkrozFHVQaOJ/UUn83yckiOL33ga6nzq
 fAwr5QM//iGTK0/2v331gyrgAqjsydz9TwwQ0DRwT/GNWLTuRd0zsDII/ccZeTaPD07j
 sxNiwSP/s/v8ukDeWhDTvx9W6v60JFtA+/QkIbH7TYhyGWzUlCPEev3tAR2D0C7nC4cQ
 f4Z6R3uZo9PDcO6kLiVBsqHm3iyB37kha/Qo6zN+0YrjFiAjkpVxvo5KunxS6XwbIFfe
 qE4Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1761122930; x=1761727730;
 h=to:references:message-id:content-transfer-encoding:cc:date
 :in-reply-to:from:subject:mime-version:sender:x-gm-message-state
 :from:to:cc:subject:date:message-id:reply-to;
 bh=HwFi+n9DN89Qb+S5di79/dpnmIH+fFYqRO5QDyr1aI8=;
 b=FbAfs9SLqfDv4RLXB4MGmOC9/RaYFOOU3Namsh8hkuPd3yAZMuU/XmpWV17dUquZWT
 zRIx987RoAT+5iEKxzq63qn2m5M+CmygD81QJb/gI1XmmEtxwHrAKbWCocIN3sCoo6zp
 TD0XyhuqiKdcgioY+37XsemO68HXZoPCSIUKoBHBbJhWeZJgdxYJapt1ujoz7jVGh+uy
 yBJ6yjKaMHUqVR9vElM6wQgGRMarXPABDxl42usOw0AMkcQKIkWS4ncs3sjxWPC2pcf2
 skASMggOUX0yfKf/XqREVK01ALohI0eizvw+Fh2aweBvB91FLTdU/WsjlgSQ9l2W7wcP
 O3sg==
X-Forwarded-Encrypted: i=1;
 AJvYcCW3u7cme0pCUCBDbdAa8XPvUsWcALqm65fGTrN8RtU6Svz1bmA8dcx9olYIQiZmEIVjH0zaGw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yzp0Un/m0m08VV99cO7hm9Lv/QTK8aZEGmrMF+A5z3i5r1iuNrG
 sHedbOrCqeETTToGycbi9aPNVVMZLIEjXuAoLSB2RWRksgEKdj53Uwpq
X-Gm-Gg: ASbGnctlG36qskrYzy8qLJiW1DaX99BuR6rrdSoiem77L7OHHKvwblf1kWT/ls2ymLA
 56/MhwT7pO6iz/FSe0mIjS0kDsNdia3HoJLCauTR7f5EVfDSR2pongnom3Klv566v37YqpwhcmY
 1AOe8gB0HF75PDXzIwA6sPsGAkCo0/MN8SyPn04/PUWg8PudLpjPEdjmt80DBFw2DwgOuXLJhox
 DBfGm8rLZvnCXlnz2KekKVqP4RnGd4bDa10Oa/p+c12RMDo2GTYlnVsLqT6tY0/T+raRhyhCQic
 NuZTbo+K/cjy/NQz3ZLHjrZsIq9Zy1JHqdoT9vwntO3CchZzDSvIzQJn7DADnAKRKsxJY06dJ9z
 PDFgL3l+MdQm/FDzyWN6TTbz2BrIFeedpFLUw68Va0eHd56QwjT2px93kE3xfBEfzL1oReTIdR7
 qvqJ6zKVl+WU4PMN3+V0V8KRf7Db/IJa+lFwLSLhIczuw/0ZddPf0KfFP/MfseQ0Hf9Q==
X-Google-Smtp-Source: AGHT+IF3Op0vso4wyM59edKc02xqNpM+4u9LG/4uKP6OlAV0ckXQZ5kATRE8faX+brmrNo0tB3DBow==
X-Received: by 2002:a05:651c:1545:b0:336:ca4c:df40 with SMTP id
 38308e7fff4ca-3779785fde1mr60852891fa.12.1761122929564; 
 Wed, 22 Oct 2025 01:48:49 -0700 (PDT)
Received: from smtpclient.apple (c188-150-186-155.bredband.tele2.se.
 [188.150.186.155]) by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-377a9508590sm37193261fa.31.2025.10.22.01.48.48
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 22 Oct 2025 01:48:49 -0700 (PDT)
Content-Type: text/plain;
	charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.120.0.1.15\))
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
From: =?utf-8?Q?Mattias_Engdeg=C3=A5rd?= <mattias.engdegard@HIDDEN>
In-Reply-To: <877bwoj8oy.fsf@HIDDEN>
Date: Wed, 22 Oct 2025 10:48:48 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <66FE8C53-48DD-4A3E-9676-9D1F9A8C2A13@HIDDEN>
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
To: Nicolas Martyanoff <nicolas@HIDDEN>
X-Mailer: Apple Mail (2.3654.120.0.1.15)
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79668
Cc: Eli Zaretskii <eliz@HIDDEN>, Philipp Stephani <p.stephani2@HIDDEN>,
 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

21 okt. 2025 kl. 22.34 skrev Nicolas Martyanoff <nicolas@HIDDEN>:

> The fact that the JSON parser produces symbols by default is another
> problem on its own.

The JSON parser produces hash tables with string keys by default.

> I really would not want a JSON serializer to enforce object key
> uniqueness for me

Well if you have special requirements that go a bit outside the agreed =
JSON standard then I'm afraid you are on your own. The uniqueness check =
has been there since the API was introduced; if we dropped it, there is =
a risk that code relying on it would misbehave or leak information.






Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 22 Oct 2025 08:37:50 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Oct 22 04:37:49 2025
Received: from localhost ([127.0.0.1]:55025 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vBULt-0003k2-GG
	for submit <at> debbugs.gnu.org; Wed, 22 Oct 2025 04:37:49 -0400
Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]:45234)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <rpluim@HIDDEN>) id 1vBULq-0003jg-2Q
 for 79668 <at> debbugs.gnu.org; Wed, 22 Oct 2025 04:37:47 -0400
Received: by mail-wr1-x42f.google.com with SMTP id
 ffacd0b85a97d-3ece1102998so5388525f8f.2
 for <79668 <at> debbugs.gnu.org>; Wed, 22 Oct 2025 01:37:46 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1761122259; x=1761727059; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:message-id:date:references
 :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id
 :reply-to; bh=oJrqMfz/PK5V3yTR0SYbAutzTvv1fTvDEwPAchHSo40=;
 b=jeunDSZjKHqnRIX08lwE+DtvKlTYtr/r9fZRkXzvWJ02ce+lK2PLRkytLWK+UvtYgU
 WE+M6Ny5e4XvRqBAWdYzjQGhop6unkAcp9F1HCQO4vqCaV3hY4Bfmq9tjCvCHZ95qnf8
 zLC8B8jIdEcqk+CO5m0wSvTU8XLL9tx0KItmwBXwLcecR9HOVBBUm2qMr7pb4CNwUArL
 0psooAJS2h6waSOto5+G/H+2kKOn8lQICW84x/1Z6DRjS6mNZki3lrs5GWUGyy5lJIEC
 iEfaPJkL/sf8ICzB9Bni/Z2QTsPk8ZYWDaoXh7FWwm8Tpg+cKgDkV2FDOHfxuyVj4EXJ
 aAQA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1761122259; x=1761727059;
 h=content-transfer-encoding:mime-version:message-id:date:references
 :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc
 :subject:date:message-id:reply-to;
 bh=oJrqMfz/PK5V3yTR0SYbAutzTvv1fTvDEwPAchHSo40=;
 b=oil2538ppsKfi8/TBgu8W2Jxv9fmllqddDSDc5HjhuJNBNMgAnM5Frb4rOn9rNMAze
 eo5CjLa+ZO4Ut4ZCn7LSrTsL6fOuks6IaACUnpZurARuLMvX1VjxaMiW8D1QbwbJreYZ
 Jetts9fbnRR+O9P2ZW7QdJokKzsW2d8ZGeyahF7pU4fVLBMzyKv32M1wAb+jZVoTbSxP
 6HjnWoHRws58PnCz045SBiwv17jc8pmI3k2J3BCBEQeiF/9pyPQhIzXRRFPZwBi9n77O
 REZtt7RCJ7GpoDV7udZ2VPvnYrMHbDBklZuyEAuCSxLVZa7CEj1IzuqNa8LfdDzBgHYA
 qj6g==
X-Forwarded-Encrypted: i=1;
 AJvYcCVrMzbtGfUn+67+4fRaXrm9SqgabvZ3jXiwaNdbXjZ1SBrvgshZvt2bo8+dMT4SOSllB0zSjQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwB67MHrg97+hodZNARTyEm/oYOUcaDuBF1dPCssNrGW06IY0wQ
 lyMDhlfMD8cPTWRLXA4CBBPIuOqaoHTH6rBLUrgB/Ap0n5PiiRdNHuZV2GDS3c/+
X-Gm-Gg: ASbGncsq2+lHOSJlD5/fXD5FT7gSuN7kXu4pEDIJWRo1H6dGPauZ5eORB5Q3XMHLwBZ
 hNv4lptqlVbl4id5gZkuUqixEebQS4A+Dm0jj1eFcCLaxj1zvp14WSNqqoKjSfOJ0oBi5cV+fXX
 KLPvEiq65BffnFzfKtiCyNQwpkNBQC9j9uHYYc8Hb7zzyJw6M9nvBCk6ukQVQIa5FGaF0S9HDL7
 sRq0Ve7moArRAY6iu4KaoinpXuVWc5+cGQFY7YQ0VmKlmwaqC+R8ZiJT7G04HcAJ3aNJG5dnhdO
 mXe/qdJFfNP4w/DR08aDxprDLmF56TwdDidpAzAKABAwf3c4wub0mVLf5aJD7WWXQZzQ9B5TYSP
 FeZEYK6Xj8sJvj5K6SbnicQyEkuB5BfMzUqwIDKCgblYwvajfyS8MwRTbxWR0D2BZO4l7bEgpUg
 ==
X-Google-Smtp-Source: AGHT+IGIrpbEBUW3WgQzm4nrWkZunCdK5oPDssJ9l+SuX/nRzLt8prxeyvZeQsMJx328jjlEx09DWg==
X-Received: by 2002:a05:6000:1884:b0:3ee:15c6:9a6b with SMTP id
 ffacd0b85a97d-42704dccd35mr12776021f8f.48.1761122258954; 
 Wed, 22 Oct 2025 01:37:38 -0700 (PDT)
Received: from rltb ([2a01:e0a:3f3:fb50:45ed:2a50:e9e9:fa3e])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-427f00ce678sm24412854f8f.51.2025.10.22.01.37.38
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 22 Oct 2025 01:37:38 -0700 (PDT)
From: Robert Pluim <rpluim@HIDDEN>
To: Nicolas Martyanoff <nicolas@HIDDEN>
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
In-Reply-To: <877bwoj8oy.fsf@HIDDEN>
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
 <877bwoj8oy.fsf@HIDDEN>
Date: Wed, 22 Oct 2025 10:37:37 +0200
Message-ID: <87frbbwcvi.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79668
Cc: Mattias =?utf-8?Q?Engdeg=C3=A5rd?= <mattias.engdegard@HIDDEN>,
 Eli Zaretskii <eliz@HIDDEN>, Philipp Stephani <p.stephani2@HIDDEN>,
 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

>>>>> On Tue, 21 Oct 2025 22:34:05 +0200, Nicolas Martyanoff <nicolas@n16f.=
net> said:
    Nicolas> I really would not want a JSON serializer to enforce object key
    Nicolas> uniqueness for me: it is not absurd to think you may end up in=
 a
    Nicolas> situation where you absolutely need to send duplicate keys, ei=
ther for
    Nicolas> an a badly designed API (I had to do much worse than that in t=
he past=E2=80=A6),
    Nicolas> or because you're actually testing that an API handles it corr=
ectly.

    Nicolas> Now if it happens to be the case, this is the way it is (at le=
ast until
    Nicolas> someone add an option to disable it), but in that case the use=
r is
    Nicolas> responsible for providing either symbols or strings, meaning t=
hat he is
    Nicolas> responsible for the impact on performances.

    Nicolas> In my current situation, I really don't want to intern dozens =
of symbols
    Nicolas> that have no meaning beyond the API protocol, especially with =
their ugly
    Nicolas> underscores in the middle.

That means we=CA=BCd need something more complicated than my initial
thought for fixing this, which is:

diff --git a/src/json.c b/src/json.c
index 30a22dc8038..94203899660 100644
--- a/src/json.c
+++ b/src/json.c
@@ -443,6 +443,8 @@ json_out_object_cons (json_out_t *jo, Lisp_Object obj)
 	  CHECK_CONS (tail);
 	  value =3D XCAR (tail);
 	}
+      if (STRINGP (key))
+	key =3D Fintern (key, Qnil);
       key =3D maybe_remove_pos_from_symbol (key);
       CHECK_TYPE (BARE_SYMBOL_P (key), Qsymbolp, key);
=20
Robert
--=20




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 21 Oct 2025 20:34:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Oct 21 16:34:16 2025
Received: from localhost ([127.0.0.1]:53352 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vBJ3g-0007rt-59
	for submit <at> debbugs.gnu.org; Tue, 21 Oct 2025 16:34:16 -0400
Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]:43033)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <nicolas@HIDDEN>) id 1vBJ3c-0007r9-Rv
 for 79668 <at> debbugs.gnu.org; Tue, 21 Oct 2025 16:34:15 -0400
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-46e542196c7so1622825e9.0
 for <79668 <at> debbugs.gnu.org>; Tue, 21 Oct 2025 13:34:12 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=n16f-net.20230601.gappssmtp.com; s=20230601; t=1761078846; x=1761683646;
 darn=debbugs.gnu.org; 
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=t7KS64h8saS/5T6vE+Co7eY7t+VX9D+jy/aGefr2NP4=;
 b=oCy0r6k/po7Q9T5YceKKixkAMBFRlqes/e/Qn8wcv1zKChl7yBFQKnr2ewE0zPq1aT
 HCXIR/cBu2zK+byTZwg2xEedYGYeShze+qQ1awLFspXA2KPOtzj98+yNaxy+odr/MlsV
 I5t0mEZUEXKUCMNBCVKEky6H90+GzelBOUsJioo7O7kV6NHGL3nT9gNybE+fiuSih77j
 GgRDHTLY0P5usxmwl7IAST+ZwZwvLox1wLWzbXOz+l7iVKj09IGVqA/jvfZJ7iK138FA
 bzR+x44f0NIZ1l8dQizOn6PCrBUGW9jy6m9oYE9YCFhKosMy5xhJCDbPi+s8/EU43KnW
 hTlg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1761078846; x=1761683646;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=t7KS64h8saS/5T6vE+Co7eY7t+VX9D+jy/aGefr2NP4=;
 b=mBmuGGTjrw2s/BFNKZwsaqfNoRVrVc33tVee0NWr1cOJRXMt+I2TZyiMCpwF0n7RC8
 FtUHr/maOrVEK1pGCxzExvUBXJZMmX3j53OHoqxVzxKyKHQGtGCATW3uSY0fj+/hlKxa
 aUPw2cN3x7mkrIfHw7w5gzvA8pTX8w3JoR+noHdjTXfjJ9wx03yjLsQd6OFDR9Z95sPc
 LpSFRevuhY8PMV8IEgkl3kqgAmqkbyrFFp+nBEs/0ABYcSufwIDK8dmsmk5KRyMyidrV
 IgGZhJ+vJMZgFizQuzAdS695E6dzy8li1fUto8l9CmG7aWOkomlFjCUpudluz9Gx/Wrv
 /afg==
X-Forwarded-Encrypted: i=1;
 AJvYcCX/Kvs2n5LW3BLmiUB7/Cm45Yusz3WxULttplT5awh5PMNP9r5a++LBY+Y0LuF9cXiwFZU1HA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwEBywJ3MssElPu5JNHKEvd+Lkv9T/kO/cTrdRaHZQLI3ZLfUvD
 Ol+oVhmIScbHjRhbKoe4ocxXcEBYcySdq2CMOQHzYmO4l5PSp4FeRHI7i9TM/MdSvyI=
X-Gm-Gg: ASbGnctGBVjPOb410n5w0c9caE1ZnYiYmpJZ8nNf7pOaUsGQdeZQmzCYmN06orUuQnx
 LIEnuCuQj0MmQHp0390jccUEEnIz5skLbH44C9qbu8uofJbStA2OhsJy7ALgg4CxuT/XQofzEF1
 L2OqwecrH0oZ4XWN3vqrCtg9NH76ecEvcQX3MW874aLAVA4X5isSYNE/u+R4RNKlMdwq1/1vT5L
 IMX6JQ0Sttp5hG/6/9CAh9rt2vVaPQz315AnTbCLhPtDkD6t/9M4Gg32V0YS+auNjqE2lRUQYeK
 DFn9GGg8xiJ9TvxS1G2scYk4IuteUDCKdIxaOr0miEMPGi3yRxJVtO/nDECXom3OjzB52x2f/wR
 jnBy5hDe/y8BYemMDfkS2J513ecE2/vWbcn2EG6+EhsA5gz0OGCIjR/VTH6EdKPfTDAVBYDW3DN
 6fMfP8yro6hdEdhLjOrcwFBXSaQMvTczCw2xxAKGqEiFj89zVYx3yvM3oL35l6b+A=
X-Google-Smtp-Source: AGHT+IEpkzfWgHpoH04zOOJmVeSTISl3AyZUXCyyeliz8xvqKcVd5niTp8i4ghLY0EZANhvgXxpwMg==
X-Received: by 2002:a05:600c:34d2:b0:46f:b42e:e38f with SMTP id
 5b1f17b1804b1-475c4004b2emr8237165e9.19.1761078846173; 
 Tue, 21 Oct 2025 13:34:06 -0700 (PDT)
Received: from valhala (2a01cb040ec9e60097860c4c71a390d6.ipv6.abo.wanadoo.fr.
 [2a01:cb04:ec9:e600:9786:c4c:71a3:90d6])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-47494aa0336sm25552595e9.1.2025.10.21.13.34.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 21 Oct 2025 13:34:05 -0700 (PDT)
From: Nicolas Martyanoff <nicolas@HIDDEN>
To: Mattias =?utf-8?Q?Engdeg=C3=A5rd?= <mattias.engdegard@HIDDEN>
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
In-Reply-To: <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN> ("Mattias
 =?utf-8?Q?Engdeg=C3=A5rd=22's?= message of "Tue, 21 Oct 2025 21:49:03
 +0200")
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
 <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
Date: Tue, 21 Oct 2025 22:34:05 +0200
Message-ID: <877bwoj8oy.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79668
Cc: Philipp Stephani <p.stephani2@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>,
 Nicolas Martyanoff <nicolas@HIDDEN>, 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Mattias Engdeg=C3=A5rd <mattias.engdegard@HIDDEN> writes:

> I'm just speculating here (and Philipp will correct me) but it could
> be to enforce the same type scheme that is used by the JSON
> deserialiser, which presumably used symbols for keys because it's felt
> as more convenient for the user.

The fact that the JSON parser produces symbols by default is another
problem on its own. It is a well known issue in other languages (e.g.
Ruby, Erlang); you do not want to intern all symbols coming from a
server you do not control.

I was actually thinking about writing a patch to add an option so that
the parser produces string instead (which would not change the defaults,
for those who prefer it that way).

> There's one small implementation advantage in insisting on symbols:
> `json-serialize` gets away with a cheaper uniqueness check by assuming
> that keys are same iff they are `eq`, which is true for interned
> symbols. (Yes, you can defeat it by using uninterned symbols.)
>
> It's not clear that this key uniqueness check is very useful but the
> old implementation had it so I felt I had to include something
> similar. After all, an alist can be amended by consing a new entry at
> the front which overrides the old value and you wouldn't want that old
> value to leak out to another process. However, it really should be the
> caller's responsibility not to serialise object with duplicate keys,
> though.

I really would not want a JSON serializer to enforce object key
uniqueness for me: it is not absurd to think you may end up in a
situation where you absolutely need to send duplicate keys, either for
an a badly designed API (I had to do much worse than that in the past=E2=80=
=A6),
or because you're actually testing that an API handles it correctly.

Now if it happens to be the case, this is the way it is (at least until
someone add an option to disable it), but in that case the user is
responsible for providing either symbols or strings, meaning that he is
responsible for the impact on performances.

In my current situation, I really don't want to intern dozens of symbols
that have no meaning beyond the API protocol, especially with their ugly
underscores in the middle.

--=20
Nicolas Martyanoff
https://n16f.net
nicolas@HIDDEN




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 21 Oct 2025 19:49:15 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Oct 21 15:49:15 2025
Received: from localhost ([127.0.0.1]:53228 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vBIM6-0004yc-U1
	for submit <at> debbugs.gnu.org; Tue, 21 Oct 2025 15:49:15 -0400
Received: from mail-lj1-x22e.google.com ([2a00:1450:4864:20::22e]:47511)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <mattias.engdegard@HIDDEN>)
 id 1vBIM4-0004yB-9T
 for 79668 <at> debbugs.gnu.org; Tue, 21 Oct 2025 15:49:13 -0400
Received: by mail-lj1-x22e.google.com with SMTP id
 38308e7fff4ca-37634d352dfso75223471fa.3
 for <79668 <at> debbugs.gnu.org>; Tue, 21 Oct 2025 12:49:12 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1761076146; x=1761680946; darn=debbugs.gnu.org;
 h=to:references:message-id:content-transfer-encoding:cc:date
 :in-reply-to:from:subject:mime-version:sender:from:to:cc:subject
 :date:message-id:reply-to;
 bh=DEQUzUJsLeyDVzk/6fc1wfiqfbSVgM0QJWw43ndldWo=;
 b=HRGKiCCSKXjmCXYq/qKgdLqyvTsyz1GzIs1dCNW7xuwYGp+UNnu95bpA1wlcSqA0aV
 B92ompOC99A9esX34zCrJNX0+M3oFSnQNOfAxnQsFGt0xOy9gmN3FwhwWk0iYCRNOLUx
 ZjcQ5xYISWzg5ZSlQFCSl+ZTDWXjLDtf55JkuCUaavhz6+d2l+gDf0QGqo5DxXKLlNki
 QW6dCNpoMIx8Tmsv7C+0pNZn+tpV7rABgTM6gsjbe83HSIuNnmP9DrpXMfvOlTyIf8OC
 6/4gmfHnje/4c77N3f7h6KIDnbx2jTKm44ampDVu8kikMnUphwR5dXFXl3B8QddWjxb/
 brjQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1761076146; x=1761680946;
 h=to:references:message-id:content-transfer-encoding:cc:date
 :in-reply-to:from:subject:mime-version:sender:x-gm-message-state
 :from:to:cc:subject:date:message-id:reply-to;
 bh=DEQUzUJsLeyDVzk/6fc1wfiqfbSVgM0QJWw43ndldWo=;
 b=CD+T6HfzXIdjjbGLTJsyekt7Jny7bKbUMcjLzXgMcWRZ4HOVxHZKdafi/Xem7iL49Q
 XIBXlGMCKnCh2SOef+7IdW+j+qQENEcgTizG9gYZunOzhlmhv3eQ76aqsrZsIxxCQxyJ
 4S4Tsh0BIRKKjGbsqwf75RSVjPNXf36Y0zNSLA2DMIEsnOh2aHL99q7d0DmloSkBz4SL
 DlW/TBn3DbH1aspUfAKliigvCWs3V8O3P+fragfLnTUTcdo1/cQvU425n0C45jeEx7lo
 ftU2TGS0r3qNSWcndxB+PC78QnuohzNfr1JGSA5EZ9FPbLAC02Q8JXyi5+uOT4n1wtog
 KwVQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCVfldyNYJ+rx4vtMBKon3IqGxCIySbdz8klt0m4nTvg6hsIRgxBrymx3j0HRSKnqWXDVsAVJQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzIh1rc8062AaDnaRaFo9NYcEXVvIME207YkUCdfYnEl8tqZMPV
 uRBjDlQk9iPQ5pEF6Z43bFazQ6MD4Euz03kmu4k+ccYL9EcsALm1YD5a
X-Gm-Gg: ASbGncvXg0Pw0NpcIVw0M3EQIFNXQ4fwj56p0EA5wVJSotNAcSXMCxOHmXUAldEFhjC
 AKO42L9aQ/dwWGONeas+AaMb3lUw1jbwcW9zWCkRv9xfy8+DvGuBlFrDMjdpbCcWWJ8+cVhxLQi
 8fDIjGSoDriPXxGSe3feCGLfkP0prNwTHQGTaj40qOjyCNWHUREnhSDfzkP67ynCzJT6LvESKXH
 lG3MpbGqXyMHz5j1+bYKC+/mm0367/C4Znu6XsM35po4IzDLO42sSECB/ijyOxsEe/nv/E+LDlW
 aoqdYI7FIdHg6wU5AkfCEGElvjCau5CyK2ZA/Ej3Mus3I/FpTn9TasjR2vp4brUbfMpQ8Ks7J9q
 e2KxemhGqDrgIWogvLXDpKW7mFjgRxf+Y75sUdRcUHZGU2BG6h/Poz37mq1tfjRPuIdAaZUBkmK
 feocw9y2nWtnzOkqsHZaRY1GaHCJrjMK5FQocE9upfsusCasOqrtEbTGX7+B5EX8lZv2vC+Q0+P
 W7Hlpt7jG0e7m4=
X-Google-Smtp-Source: AGHT+IHXTVI9tcm8hbb8//9vduQ8Z/Ov/Vn5s8vQy0Zp2gUMEhRkMXFghOmtG7Z7GMFWWQHjYBdBog==
X-Received: by 2002:a2e:9a13:0:b0:350:adaa:6b93 with SMTP id
 38308e7fff4ca-3779782a1e3mr60674761fa.6.1761076145410; 
 Tue, 21 Oct 2025 12:49:05 -0700 (PDT)
Received: from smtpclient.apple (c188-150-186-155.bredband.tele2.se.
 [188.150.186.155]) by smtp.gmail.com with ESMTPSA id
 38308e7fff4ca-377a95789f1sm31291481fa.41.2025.10.21.12.49.04
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 21 Oct 2025 12:49:05 -0700 (PDT)
Content-Type: text/plain;
	charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.120.0.1.15\))
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
From: =?utf-8?Q?Mattias_Engdeg=C3=A5rd?= <mattias.engdegard@HIDDEN>
In-Reply-To: <864irsvzb6.fsf@HIDDEN>
Date: Tue, 21 Oct 2025 21:49:03 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <56A76D85-5316-4917-8D3F-ACBD241BDC03@HIDDEN>
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN> <864irsvzb6.fsf@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
X-Mailer: Apple Mail (2.3654.120.0.1.15)
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79668
Cc: Philipp Stephani <p.stephani2@HIDDEN>,
 Nicolas Martyanoff <nicolas@HIDDEN>, 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

21 okt. 2025 kl. 21.18 skrev Eli Zaretskii <eliz@HIDDEN>:

> From: Nicolas Martyanoff <nicolas@HIDDEN>

>> I'm puzzled, in which world does it make any sense _not_ to handle
>> strings for JSON object keys which _are_ strings?

The exact reason why the JSON serialiser doesn't accept strings as keys =
in alists and plists isn't entirely known to me -- I just made it =
compatible with the previous, libjansson based encoder/decoder. Maybe =
Philipp remembers?

I'm just speculating here (and Philipp will correct me) but it could be =
to enforce the same type scheme that is used by the JSON deserialiser, =
which presumably used symbols for keys because it's felt as more =
convenient for the user.

On the other hand the old elisp implementation, `json-encode`, accepts =
any mix of strings, symbols and keywords.

There's one small implementation advantage in insisting on symbols: =
`json-serialize` gets away with a cheaper uniqueness check by assuming =
that keys are same iff they are `eq`, which is true for interned =
symbols. (Yes, you can defeat it by using uninterned symbols.)

It's not clear that this key uniqueness check is very useful but the old =
implementation had it so I felt I had to include something similar. =
After all, an alist can be amended by consing a new entry at the front =
which overrides the old value and you wouldn't want that old value to =
leak out to another process. However, it really should be the caller's =
responsibility not to serialise object with duplicate keys, though.






Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 21 Oct 2025 19:18:34 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Oct 21 15:18:34 2025
Received: from localhost ([127.0.0.1]:53105 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vBHsQ-0002mK-3X
	for submit <at> debbugs.gnu.org; Tue, 21 Oct 2025 15:18:34 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:50462)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vBHsO-0002lt-3u
 for 79668 <at> debbugs.gnu.org; Tue, 21 Oct 2025 15:18:32 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1vBHsI-0001BB-AU; Tue, 21 Oct 2025 15:18:26 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=bpcJ7UVoxj+DqnDxuOh3CK7sBpjYAJMReLHAlOiIuNQ=; b=mpn4dAdKsNX+D5NX8klh
 8qHuZ2nwg2rUkl8aJt0EeHxFxw3Jr78/xPnag151JEaQqNrWkGVt2WKWvtX48zw2Vp7pkATNmxBbE
 qwYHth2PaqCQuGrtLX0ls8vLZRaK+KVrPo8NaGjF1ij3LMu1lJL6J3O+ELOeOTFjsCb951ivJM6E+
 KxQJS7TC9CUjV/fZwIHpU5/bZqhLjVU33RJ8DPcE7XP7F3wdzPTXtPKquRyVG2tSuO0jEW3uyHp6R
 IwpIWmDD8fSVSfFblspI90j6cMKUXQJZF9OoCUGcCv3K0fS+bFEZ7nwOQQ5CNI4DG+L4RqctDqs2H
 H+Mwvctyw75Ugg==;
Date: Tue, 21 Oct 2025 22:18:21 +0300
Message-Id: <864irsvzb6.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Nicolas Martyanoff <nicolas@HIDDEN>,
 Mattias =?utf-8?Q?Engdeg=C3=A5rd?= <mattiase@HIDDEN>
In-Reply-To: <87bjm0jg8g.fsf@HIDDEN> (message from Nicolas
 Martyanoff on Tue, 21 Oct 2025 19:51:11 +0200)
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
 <87bjm0jg8g.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79668
Cc: 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Nicolas Martyanoff <nicolas@HIDDEN>
> Cc: Nicolas Martyanoff <nicolas@HIDDEN>,  79668 <at> debbugs.gnu.org
> Date: Tue, 21 Oct 2025 19:51:11 +0200
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> >> Do you mean that it should not be reported as a bug because the code
> >> matches the documentation, or that the fact that it only support symbols
> >> is the right behaviour and that there is a reason not to allow strings?
> >
> > The latter, of course.
> 
> I'm puzzled, in which world does it make any sense _not_ to handle
> strings for JSON object keys which _are_ strings?

AFAIU, JSON objects are maps, so we use the best data types for that
on the Lisp side.  See the node "Parsing JSON" in the ELisp manual.

> It's not costing anything, it does not mean that symbol must not work.
> 
> If there is a reason behind this decision so be it, but it's hard to
> understand what it could be.

I'll leave it to the experts to answer that, but from my perhaps naïve
POV I don't understand why you must use strings there and not symbols.
You can easily make a symbol from string by using 'intern', if that's
a problem.  Of course, you haven't told in what kind of real-life use
case you bumped into this issue, so maybe I'm missing something.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 21 Oct 2025 17:51:22 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Oct 21 13:51:22 2025
Received: from localhost ([127.0.0.1]:52969 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vBGW2-0006dU-Dq
	for submit <at> debbugs.gnu.org; Tue, 21 Oct 2025 13:51:22 -0400
Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]:54519)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <nicolas@HIDDEN>) id 1vBGVz-0006cl-KZ
 for 79668 <at> debbugs.gnu.org; Tue, 21 Oct 2025 13:51:20 -0400
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-4711b95226dso47772405e9.0
 for <79668 <at> debbugs.gnu.org>; Tue, 21 Oct 2025 10:51:19 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=n16f-net.20230601.gappssmtp.com; s=20230601; t=1761069073; x=1761673873;
 darn=debbugs.gnu.org; 
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=7WOL/ZQ4TGPQIwL3g44S87YowbVjpgEkJ9h2xoImI4E=;
 b=UUUkM9ydseIkY96KjMgEwuXVtrVJ9whZffrgMRGlWm8A2gcngvPCopQeIq3eqxPtY+
 U3LYPEA3q5j1UBIwX/L4MT9aK+jq41J5ug+i0qpp9leVavu7NtasSWpBbljVrGyNzymO
 FpX4jsl9/YyTEHckiGzKNI3SRZMtgGiSa5PLWIrtG6baCLdB95YZj9NStT3kBGN6F33T
 geuuA9cfmuF3Hb9CPzTHnTErv5lGpI6xuLh0AYxi98q87v0IyAHehhu5iUn56Z3w5rF2
 kIUSP1DTI0PZcwvl12qWKGLN2EWuEHFtp55fky4FiOinZv2zYEEDZEymLAvO2xUpPiCL
 1rBQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1761069073; x=1761673873;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=7WOL/ZQ4TGPQIwL3g44S87YowbVjpgEkJ9h2xoImI4E=;
 b=c93rfeEkTLelGkCGChxCS+iINT68BdSQ71vuFqaTh8jKZuOs9YIzL8pmARIQqPHl/K
 5etQuiQlJjp2inoFLK7Pm9bKgJBO2q3UNqAp+bCtofzpIBr0AN0AJJ36eNaHuaKzWeiv
 MQMBEOg9oR7mS9+kStxiWlsjbRO156aOknRdOEQ3J4lSrRQVE0mVQdwA1uUTCjDPAvxT
 fVHbuxNEiRvzE0B1cXqgX+bUR/mJqWorsnbEWD0CdwgXeU6QmbE4aG5wGNNdamiQvYQi
 5Nov4gbtXTmZ3lTJXNONff4nnum6yQfZAMzej+pNE4Jh/CCLG/99GcLop38w6I6g0tuv
 S8DQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCURjCEyXDwBAojQHHHMi7QkBErkeStSbRTvtZ4PbEkb2N/peXxjRINiqtGhRFh17E+KSj3z3w==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yxb++aJzbbytWhHMFKuA4XB/HZnakQVZUNlr0jyJ0dEpSLCO9og
 W6Vt0vry4vpxgTRUhfJOE+qiroHwepeCjCC1gkSyp3dRurlt/uQ5QEhtunZ3s8ajLu7C14EZ4wI
 kkK85GB8=
X-Gm-Gg: ASbGncs3tujF96BKUivvdJnOUz13jWWgd2o9a4My1pyvuhJFfYUX57o5T56zG035t7D
 ebD3FRjKh81DpoKiqXZqABF07hoEzSkDahqgv/49JErhVZF6eHx6P0jNpQCrJxgFBGJbmt69VAs
 lBXhd+xCs928doeBX/cpdxQ9tes+mnDMWYzcGkh22E7Y7xBrOrFmbnUWuiinTJurAfkmtHgOOwC
 FoK/AxqRNNxC5/ipOP1eAHTgM1OKcuJYqlT6XW8u3sj8S1itr3Ol0mfsJzSKSDtjJsNHphUZBEq
 RRaIvept4+teTk36pvGUVVk8hJhP50/spVLKe+JNrUcPYAnXjWuaJn0E2FR6OLNpaQPypc4oweY
 Qduu+M6/vgNNnmgUxmfHxa13jEcsMuWDSMBalcpA8iKfVyMHuTHUh3Mqbcc7k2coxEZ+kZWAzRE
 1E2lPIl0BHD6rCAbWtsQmQ1tvkMD1K/TVjgqysdiTtB+Ru4gSrCaC3mrJn7U3RCQE=
X-Google-Smtp-Source: AGHT+IEABtK8/ljI/lCsHp1jMOaGYFCB2Ydbq/WBmOQqv2rcsiJmmdYY9yDj0W8PWcXCf8Tkp7djog==
X-Received: by 2002:a05:6000:2c09:b0:3ec:e0d0:60e5 with SMTP id
 ffacd0b85a97d-42704d75008mr13107835f8f.15.1761069072715; 
 Tue, 21 Oct 2025 10:51:12 -0700 (PDT)
Received: from valhala (2a01cb040ec9e60097860c4c71a390d6.ipv6.abo.wanadoo.fr.
 [2a01:cb04:ec9:e600:9786:c4c:71a3:90d6])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-427ea5bbc50sm21697008f8f.21.2025.10.21.10.51.12
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 21 Oct 2025 10:51:12 -0700 (PDT)
From: Nicolas Martyanoff <nicolas@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
In-Reply-To: <868qh4w6fo.fsf@HIDDEN> (Eli Zaretskii's message of "Tue, 21 Oct
 2025 19:44:27 +0300")
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN> <868qh4w6fo.fsf@HIDDEN>
Date: Tue, 21 Oct 2025 19:51:11 +0200
Message-ID: <87bjm0jg8g.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79668
Cc: Nicolas Martyanoff <nicolas@HIDDEN>, 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

>> Do you mean that it should not be reported as a bug because the code
>> matches the documentation, or that the fact that it only support symbols
>> is the right behaviour and that there is a reason not to allow strings?
>
> The latter, of course.

I'm puzzled, in which world does it make any sense _not_ to handle
strings for JSON object keys which _are_ strings?

It's not costing anything, it does not mean that symbol must not work.

If there is a reason behind this decision so be it, but it's hard to
understand what it could be.

-- 
Nicolas Martyanoff
https://n16f.net
nicolas@HIDDEN




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 21 Oct 2025 16:44:39 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Oct 21 12:44:39 2025
Received: from localhost ([127.0.0.1]:52779 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vBFTT-0002Mp-9N
	for submit <at> debbugs.gnu.org; Tue, 21 Oct 2025 12:44:39 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:50046)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vBFTQ-0002Ln-Rq
 for 79668 <at> debbugs.gnu.org; Tue, 21 Oct 2025 12:44:37 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1vBFTL-0005mj-D2; Tue, 21 Oct 2025 12:44:31 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=KXLVYsoEJuzbQlY/2Jex1/0M2URS9SQhyfNSqu6T+eE=; b=QmpuWoZE7MGr
 wILCJVKhqQrbaGQrIxA1Gw58K2cDEWbHMiZFO1F5ci7lhC2iHblNGGRrnUxJ/ZnesrLLv+e7/FjZN
 BtNb3SidyCPGpMmGYP+TbU3Z6boF/5cKFJ/Qz40F/M3zlgRYQMEhx8x6OPS0BwL0QkY1UKGvbWD2J
 e2jt3wuWMWpJcoMoHVPJPmANOGHTsVo5bP2nJ/Jbm0okubaIqCAtiuUuOc0UAjTE8cddb2HkcfnYv
 GcQzVK1EsmylqM1cpZsKLUMeOu5/7adbuaMoQ2Bqfx2PECXSKaxBzTsuQvxgBJjgB88rB5Ec2HHW+
 7sbCgrWnYdqFee5WlpZkVg==;
Date: Tue, 21 Oct 2025 19:44:27 +0300
Message-Id: <868qh4w6fo.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Nicolas Martyanoff <nicolas@HIDDEN>
In-Reply-To: <87frbcjjm5.fsf@HIDDEN> (message from Nicolas
 Martyanoff on Tue, 21 Oct 2025 18:38:10 +0200)
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
 <87frbcjjm5.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79668
Cc: 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Nicolas Martyanoff <nicolas@HIDDEN>
> Cc: Nicolas Martyanoff <nicolas@HIDDEN>,  79668 <at> debbugs.gnu.org
> Date: Tue, 21 Oct 2025 18:38:10 +0200
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> > The doc string of json-serialize says:
> >
> >   alist      -- a JSON object.  Keys must be symbols.
> >
> > So you must use symbols, not strings.  This is not a bug.
> 
> Do you mean that it should not be reported as a bug because the code
> matches the documentation, or that the fact that it only support symbols
> is the right behaviour and that there is a reason not to allow strings?

The latter, of course.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 21 Oct 2025 16:38:21 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Oct 21 12:38:21 2025
Received: from localhost ([127.0.0.1]:52751 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vBFNN-0001qA-Dl
	for submit <at> debbugs.gnu.org; Tue, 21 Oct 2025 12:38:21 -0400
Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]:49636)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <nicolas@HIDDEN>) id 1vBFNK-0001pY-7d
 for 79668 <at> debbugs.gnu.org; Tue, 21 Oct 2025 12:38:19 -0400
Received: by mail-wm1-x336.google.com with SMTP id
 5b1f17b1804b1-471076f819bso46249705e9.3
 for <79668 <at> debbugs.gnu.org>; Tue, 21 Oct 2025 09:38:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=n16f-net.20230601.gappssmtp.com; s=20230601; t=1761064691; x=1761669491;
 darn=debbugs.gnu.org; 
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=7fI61mVXK0ufov12oHz5rELUZrwIWmEfmtnEfJ/fBzE=;
 b=Cg4iYTJamCDxYgN3GCqSi4D6OAOZQD0hxdLk3hGAnHpyf/vOcSOZHcI9Qe70W+Cu1Z
 HyKcm4FE+Teca32HG9Dz2yfdS29xfkX0VEJCYWiYUO8k1ph8OMKKB4oqGAFJPwfH7+P/
 skx09Iy5WjOcrO5uQ1Z9FfXioV6LgN9G3/cT4l/4Y1Q1HgHUxi6nxPaPRM1NOxB80dAV
 9zqAsRBrXFfjl8M4M/RcX+VShqoAaICxHiXMFL6XWm1VGeCzfb0sA4uA0hKXLnLvrMWV
 +rdKpQqKMDF464HCOanxbyvFzXxIc8puz4BgBGyAgDsHjra5Ar1zBfC0j/30oBZbhMSh
 VEbw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1761064691; x=1761669491;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=7fI61mVXK0ufov12oHz5rELUZrwIWmEfmtnEfJ/fBzE=;
 b=UH+8jcOwDbjSD/yNHkwFuPl2RcgNJ5oz8NNCrJyrcT1WhKWAFVnsUDuBE/70EXp4NN
 6VMVO/Sk7TQHrioSDTlV7uiuZIGxRljs3U04jk/dMV7FLc4ZBEvhHbkN6tEjlP5ngRKH
 ZGlNWmOmd4S1iwPlnrssskkgT2EWa1hRt34jTNhzip6gxNy/9/w8wYw5JKpIEner0L7/
 7LsO9nFN1xwxVRr2NZ2+DXR1AUlW2beor0yBe24gfVYsNfA6a2GVU6x8YhlZxriMX3uN
 ppbwZeFVH4G0w+czT1QyPhDxucYSQ1GjbScTDPkJXR8snOMRk4B3FRX7Sq1BWjlRqaOd
 np/w==
X-Forwarded-Encrypted: i=1;
 AJvYcCWfiyQHRQYp6DwPCJ4OT86nsO9gkYeay7AEP5BaGXIl22xL0Geic/lugCboHTxm1Abh/qNhRg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwtEd/58unZ/9KP/R/nBd7vKSCpQxVjtO20Zo6wqaYaBUg1Ok+3
 4AzcRanxCOgCfpa6t5RqbuxtsvMUpqm30if3cuxPxUNwWrEgdWSMsdfCp0O/LHwyrnBli7lYsnA
 r2GCAWhs=
X-Gm-Gg: ASbGncud9pQANeog9x3Oo2wMsNu6aHur0WN8vE0t+k9QSP0F0K3MAJE4nyN0dfp3rLK
 yKNl3mz+VElEEttr9bre6j+z3Z1bJKLZdKjbPv3GLFChV2DpZN+3/XblDYQTWGi/VaINuB27RGE
 VjEUOHNN6wQ1DijDW2pA5aw6/UD0i5d1ySy5xCJwj6svz7dUs7L/ppGxrRXPF1mdc+EeuIpk+SA
 FHUVV2ndnbg1j0slE7ECTYe1kBcZbSu/gBAue8fHRinB1WDi+8SwDz/Pe/NoxYrE5yAGL1H4uwa
 wUg7iiMm6VAUTBLIhKmCd9S4Vs5uj9HBhWuc7ClFQ1alDL5Lpxrz4xUrF7ctMHXb7QvFn0tAd2R
 CfWAbnFz8f0Gp80x7C8EqGZ0zuiwwA0ICGa2O7FtOCi0L+Vxm3OsG+CE5hhGdBpu6dGDqzbWRzz
 PWz1MMkBWNU8PmMoc8CnPIimJ0RYPHBi6xBLOeKK/ibqa9QqxMyX16TqboH/dD2F8=
X-Google-Smtp-Source: AGHT+IG/puiVYwxOpckMRShr5T5PHcoHJGrvKCcsCz1N1vlyfMgZ4RC1+date9EpOMbJwaWEbsx1dw==
X-Received: by 2002:a05:600c:4e93:b0:471:672:3486 with SMTP id
 5b1f17b1804b1-4711787dfecmr128245355e9.15.1761064691005; 
 Tue, 21 Oct 2025 09:38:11 -0700 (PDT)
Received: from valhala (2a01cb040ec9e60097860c4c71a390d6.ipv6.abo.wanadoo.fr.
 [2a01:cb04:ec9:e600:9786:c4c:71a3:90d6])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-475c428a534sm1318175e9.6.2025.10.21.09.38.10
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 21 Oct 2025 09:38:10 -0700 (PDT)
From: Nicolas Martyanoff <nicolas@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
In-Reply-To: <86jz0owbs8.fsf@HIDDEN> (Eli Zaretskii's message of "Tue, 21 Oct
 2025 17:48:55 +0300")
References: <87jz0oju7l.fsf@HIDDEN> <86jz0owbs8.fsf@HIDDEN>
Date: Tue, 21 Oct 2025 18:38:10 +0200
Message-ID: <87frbcjjm5.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 79668
Cc: Nicolas Martyanoff <nicolas@HIDDEN>, 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

> The doc string of json-serialize says:
>
>   alist      -- a JSON object.  Keys must be symbols.
>
> So you must use symbols, not strings.  This is not a bug.

Do you mean that it should not be reported as a bug because the code
matches the documentation, or that the fact that it only support symbols
is the right behaviour and that there is a reason not to allow strings?

-- 
Nicolas Martyanoff
https://n16f.net
nicolas@HIDDEN




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at 79668 <at> debbugs.gnu.org:


Received: (at 79668) by debbugs.gnu.org; 21 Oct 2025 14:49:40 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Oct 21 10:49:40 2025
Received: from localhost ([127.0.0.1]:52351 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vBDgC-0002jN-F4
	for submit <at> debbugs.gnu.org; Tue, 21 Oct 2025 10:49:40 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:54146)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1vBDg9-0002j3-CF
 for 79668 <at> debbugs.gnu.org; Tue, 21 Oct 2025 10:49:38 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1vBDg3-0006uu-TM; Tue, 21 Oct 2025 10:49:31 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=Um5hUnXq12e5CCpmT01SddE76Ocy3JLD2UAL6vuwxvE=; b=NxoA4RfPi2Gb
 rmTuyPU4+jnn9c5OoWO7x9JBsPNUzvVgfdOWUrM1IdzGrVXcu3+eb3tz10rcN+gj1oNhC/0ig7Uq6
 2FDldCCiLnlap8UOOFznGFvnayqBw5AoD5/vgMY5apIV8fDqLYmbaIIpWg3S252ySGuswcOUj9Oml
 swXREkrjT51TQQ9Bvd1EAc38i8/81AkF2XfieTZSWD9FtSxsI7r5OMY78FkZiT8p7Jiaiev1TXzdB
 A+2M8mg23du3WPGMKbKLm2UFJSa7QSpSr2mULEK8djBDNBvahANRAc+tMf6OAl3NWbTnlivcbdp4R
 SyY0HKGXTC/6ZLMLP4QOfg==;
Date: Tue, 21 Oct 2025 17:48:55 +0300
Message-Id: <86jz0owbs8.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Nicolas Martyanoff <nicolas@HIDDEN>
In-Reply-To: <87jz0oju7l.fsf@HIDDEN> (message from Nicolas
 Martyanoff on Tue, 21 Oct 2025 14:49:18 +0200)
Subject: Re: bug#79668: 30.1; json-serialize rejects strings as object keys
References: <87jz0oju7l.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 79668
Cc: 79668 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Nicolas Martyanoff <nicolas@HIDDEN>
> Date: Tue, 21 Oct 2025 14:49:18 +0200
> 
> 
> This can be easily tested in IELM:
> 
> ELISP> (json-serialize '(("foo" . 1) ("bar" . 2)))
> *** Eval error ***  Wrong type argument: symbolp, "foo"
> 
> JSON object keys are strings, and serialization should support ELisp
> strings.

The doc string of json-serialize says:

  alist      -- a JSON object.  Keys must be symbols.

So you must use symbols, not strings.  This is not a bug.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 21 Oct 2025 14:36:53 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Oct 21 10:36:53 2025
Received: from localhost ([127.0.0.1]:52297 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1vBDTp-0001zP-59
	for submit <at> debbugs.gnu.org; Tue, 21 Oct 2025 10:36:53 -0400
Received: from lists.gnu.org ([2001:470:142::17]:35582)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <nicolas@HIDDEN>) id 1vBBo2-0003f1-8l
 for submit <at> debbugs.gnu.org; Tue, 21 Oct 2025 08:49:39 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <nicolas@HIDDEN>) id 1vBBnr-0002Cb-7v
 for bug-gnu-emacs@HIDDEN; Tue, 21 Oct 2025 08:49:27 -0400
Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <nicolas@HIDDEN>) id 1vBBnn-0007Yq-Ih
 for bug-gnu-emacs@HIDDEN; Tue, 21 Oct 2025 08:49:27 -0400
Received: by mail-wm1-x32d.google.com with SMTP id
 5b1f17b1804b1-46fcf9f63b6so30851445e9.2
 for <bug-gnu-emacs@HIDDEN>; Tue, 21 Oct 2025 05:49:22 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=n16f-net.20230601.gappssmtp.com; s=20230601; t=1761050960; x=1761655760;
 darn=gnu.org; 
 h=mime-version:user-agent:message-id:date:subject:to:from:from:to:cc
 :subject:date:message-id:reply-to;
 bh=36UaQb8lVJFnOokbvVV06OeevlYmjQAE7+rxqdEeOzs=;
 b=Bl8W8Zy48BWrOVsvngJMbvKACtD8VoFYcj4B55ueVDZM3J/R3VLYWVCnqtHDn15Pyu
 gC648qmeKQ4z+sgmLRDoW0WPlXuTmgtqwoUSVMtOs1TCjxKCPU6crPN5taEcu88f4zhG
 6FfmYq/6/oDWbf35QWhz+Ml6qbF5I3P1QYN3+PokYLepH9vZqaCofA7QJ/vrBeFUeDdT
 yb3iJsi5/dde98xiMXMbNFd2jfHcKtYbnDDNU9SDERzTRrs1xJkE56hhKZzx/t/2JgOP
 LJUC7ydUORBU/VIFC/t4zYriSfN91zgJTvfUx4lFbOzlEC52/PJsbIvf22ldjltCFrxt
 q6xw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1761050960; x=1761655760;
 h=mime-version:user-agent:message-id:date:subject:to:from
 :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
 bh=36UaQb8lVJFnOokbvVV06OeevlYmjQAE7+rxqdEeOzs=;
 b=nsQq2wiAHl/N5uX6r2z1zpCf71V3TXoECin624/yo2gvGze2sobEgx+FzKBWsP7uBf
 e9AFbDA9triKp599VJdw0Elow8rvRV+LAbpVDC68FcVo7QEmcCexQEZuCRGhZB2eCTP2
 8wSWUPE9sYvP9s/0KM6MuU3C69jcHB4l8/mzSkhf6CXHB9tc68xrPkRfTAIRZ1onMjMQ
 dNNsSVPtKdTAaGXQRFt1KqCFoMn9UFpgZdOZskAPViEAmgeAkBUj/UpcptmgMUQD8hd6
 qyDWt+NU/LnORxi4ejFg4ymeIa8zQedku74MHhow/DQRrJEoThFcYyUx6kHeYjMYhoan
 U0pw==
X-Gm-Message-State: AOJu0YyK8S1qmGg9+BHbF/RM1KHgPW+ghra3C18icDaImTfh8bubwiWk
 w40jhBgRo5JY63hpjV46NVMa79Fh7ItKyuyuFTNlL5S6+a6fx5SSfD9xJ9LW+YdcV8urXfhrkXW
 w9GzXdFU=
X-Gm-Gg: ASbGncttKB6cF2fm2kBNrNtGTyFiX+UvxAMe97/YHKJqD/vRynWon2og5AkMzGzNUyc
 UGS1qhwdz30Uv0EXxqT0I7HgDrNKisPn8ellAiusuQdPad2RVLdmPjl6aLw1BIX6l0oaL5D4HF0
 LGPtjKmcN/rpCV8ASrRaW6s/mpWP3YiceevDzDvmE18M6e1hh0VAvqXOUSQ4WIt3Xh8Ve0iqr9W
 GVztbiYQ9MpbCg2RruCNhJOvaOTV/6BHb9IsrGGizPew2FbmI3vWvWVPGZXfVIRjduR9r3okXIq
 MqseFSdeBXMd1vG+iqh4U+3wRVaW7sIMQGIKrjtpPssFzelvJ6KqzhYKGCUHqNoxoHwc4675JDP
 xhS43pNzJwKqaF+HrKJwAsXRLc0wBej8OT+7Vn5dVV1IS+S0rQ7Y8t+M56ulGKDUnJj+fD6wVTj
 PwirH30vF4yc8WiyFjfiYuwnaeHsqcPYbylAB3NVXm/mbDToQCaDvQQfm5hzO6fEU=
X-Google-Smtp-Source: AGHT+IGsoe/P8TqjcyAbb/PKQGIdzomUqMeYb384s07BhTi2G/i8LxpNT8YNaldCvuY8luFy26tGnw==
X-Received: by 2002:a05:600c:6095:b0:471:95a:60c9 with SMTP id
 5b1f17b1804b1-4711786d054mr134759965e9.8.1761050959587; 
 Tue, 21 Oct 2025 05:49:19 -0700 (PDT)
Received: from valhala (2a01cb040ec9e60097860c4c71a390d6.ipv6.abo.wanadoo.fr.
 [2a01:cb04:ec9:e600:9786:c4c:71a3:90d6])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4715257d8b2sm235871125e9.3.2025.10.21.05.49.19
 for <bug-gnu-emacs@HIDDEN>
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 21 Oct 2025 05:49:19 -0700 (PDT)
From: Nicolas Martyanoff <nicolas@HIDDEN>
To: bug-gnu-emacs@HIDDEN
Subject: 30.1; json-serialize rejects strings as object keys
Date: Tue, 21 Oct 2025 14:49:18 +0200
Message-ID: <87jz0oju7l.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
Received-SPF: pass client-ip=2a00:1450:4864:20::32d;
 envelope-from=nicolas@HIDDEN; helo=mail-wm1-x32d.google.com
X-Spam_score_int: -18
X-Spam_score: -1.9
X-Spam_bar: -
X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,
 SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: submit
X-Mailman-Approved-At: Tue, 21 Oct 2025 10:36:46 -0400
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.0 (/)


This can be easily tested in IELM:

ELISP> (json-serialize '(("foo" . 1) ("bar" . 2)))
*** Eval error ***  Wrong type argument: symbolp, "foo"

JSON object keys are strings, and serialization should support ELisp
strings.

GNU Emacs 30.1 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.49, cairo version 1.18.4)

-- 
Nicolas Martyanoff
https://n16f.net
nicolas@HIDDEN




Acknowledgement sent to Nicolas Martyanoff <nicolas@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-gnu-emacs@HIDDEN:
bug#79668; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Tue, 25 Nov 2025 20:45:01 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.