Re: [Json] String comparisons -- LAST CHANCE ON PROPOSALS

Pete Resnick <> Thu, 13 June 2013 00:38 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 03E6521F996A for <>; Wed, 12 Jun 2013 17:38:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -102.599
X-Spam-Status: No, score=-102.599 tagged_above=-999 required=5 tests=[AWL=0.000, BAYES_00=-2.599, USER_IN_WHITELIST=-100]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 1L-PhJj32IlI for <>; Wed, 12 Jun 2013 17:38:49 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id 9BA7821F9994 for <>; Wed, 12 Jun 2013 17:38:49 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;;; q=dns/txt; s=qcdkim; t=1371083929; x=1402619929; h=message-id:date:from:mime-version:to:cc:subject: references:in-reply-to:content-transfer-encoding; bh=HHmlAauicgXQ3HaYcRfgN++samJZEOgvT8bSzM4rTrQ=; b=uAMD+S3sa0dwczjbFW1n+SvIYjCo6HmsX7T5osYF4a2oBNpR9yVga6UN yaYsKjLoUDwnuJrD7Oi20bcAm7a4kkDSj4wtrOtFzgxl3kks7R6D90gng MNiK0q/+f3rnw2vZg5JrCURRm8gh2rYWjr4MseRiWE8kbeoy/R268riCS 4=;
X-IronPort-AV: E=Sophos;i="4.87,855,1363158000"; d="scan'208";a="44855891"
Received: from ([]) by with ESMTP; 12 Jun 2013 17:38:49 -0700
X-IronPort-AV: E=Sophos;i="4.87,855,1363158000"; d="scan'208";a="552756519"
Received: from ([]) by with ESMTP/TLS/RC4-SHA; 12 Jun 2013 17:38:49 -0700
Received: from presnick-mac.local ( by ( with Microsoft SMTP Server (TLS) id 14.2.318.4; Wed, 12 Jun 2013 17:38:48 -0700
Message-ID: <>
Date: Wed, 12 Jun 2013 19:38:46 -0500
From: Pete Resnick <>
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.7; en-US; rv: Gecko/20100630 Eudora/3.0.4
MIME-Version: 1.0
To: Paul Hoffman <>
References: <>
In-Reply-To: <>
Content-Type: text/plain; charset="ISO-8859-1"; format=flowed
Content-Transfer-Encoding: 7bit
X-Originating-IP: []
Cc: "" <>
Subject: Re: [Json] String comparisons -- LAST CHANCE ON PROPOSALS
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: "JavaScript Object Notation \(JSON\) WG mailing list" <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 13 Jun 2013 00:38:54 -0000

I am speaking here solely as a participant. I just have a couple of 
suggestions on this topic:

On 6/11/13 12:44 PM, Paul Hoffman wrote:

[Both proposals:]
> For purpose of establishing key equality, comparisons MUST be conducted, after all unescaping is done, by comparing numeric character code points.
I think the passive construction is really confusing, and in this case 
it took me multiple re-readings to figure out what it was trying to say. 
So I'd like to suggest (including changing "key" to "name"):

"For purpose of establishing name equality, implementations MUST first 
do all unescaping and then MUST compare numeric character code points."

Assuming that's what was meant. That was my guess after much re-reading.

As for the rest:

> Proposal 1
> ==========
> There is to be no modification of any kind to the characters in keys, including case-changing or combining-form normalization.
> Proposal 2
> ==========
> There MUST NOT be any modification of any kind to the characters in keys, including change of case or change between precomposed and decomposed forms.

I actually prefer proposal 1. This sentence is simply reinforcing the 
first sentence, which has the actual requirements. If you really want 
requirements language, again I'd prefer a non-passive construction:

"Modifications MUST NOT be made to the characters in the names when 
doing comparisons, such as change of case or change between precomposed 
and decomposed forms of the characters."

But again, just my preference.


Pete Resnick<>
Qualcomm Technologies, Inc. - +1 (858)651-4478