lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250205081501.160180bc@foz.lan>
Date: Wed, 5 Feb 2025 08:15:01 +0100
From: Mauro Carvalho Chehab <mchehab+huawei@...nel.org>
To: Akira Yokosawa <akiyks@...il.com>
Cc: Jonathan Corbet <corbet@....net>, linux-kernel@...r.kernel.org, Linux
 Doc Mailing List <linux-doc@...r.kernel.org>
Subject: Re: [RFC 1/6] scripts/get_abi.py: make it backward-compatible with
 Python 3.6

Em Wed, 5 Feb 2025 11:37:52 +0900
Akira Yokosawa <akiyks@...il.com> escreveu:

> Hi,
> 
> Jonathan Corbet wrote:
> > Mauro Carvalho Chehab <mchehab+huawei@...nel.org> writes:
> >   
> >> Despite being introduced on Python 3.6, the original implementation
> >> was too limited: it doesn't accept anything but the argument.  
> > 
> > The original implementation *of f-strings* ?

Yes. IMO, even the original version of f-strings is better than the legacy
way of using '"string" % (tuple)' or "str.format".

Besides that, there aren't many places where it uses expressions inside
f-strings.

> >   
> >> Even on python 3.10.12, support was still limited, as more complex
> >> operations cause SyntaxError:
> >>
> >> 	Exception occurred:
> >> 	  File ".../linux/Documentation/sphinx/kernel_abi.py", line 48, in <module>
> >> 	    from get_abi import AbiParser
> >> 	  File ".../linux/scripts/get_abi.py", line 525
> >> 	    msg += f"{part}\n{"-" * len(part)}\n\n"
> >>                        ^
> >> 	SyntaxError: f-string: expecting '}'
> >>
> >> Replace f-strings by normal string concatenation when it doesn't
> >> work on Python 3.6.
> >>
> >> Reported-by: Akira Yokosawa <akiyks@...il.com>  
> 
> You might want to add
> 
> Closes: https://lore.kernel.org/2d4d3fd1-5fe2-4d18-9085-73f9ff930c2d@gmail.com/
> 
> >> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@...nel.org>  
> > 
> > So I'm curious ... later in the series, you make 3.9 the minimal version
> > for the kernel.  Given that, is there value in adding compatibility for
> > older versions here?  

No because 3.9 is still not enough to accept a valid Python expression on f-strings.
This arrived only on Python 3.12[1]:
	"Expression components inside f-strings can now be any valid Python expression"

So, with this patch, doc build can be using Python 3.6. Still, it makes
sense to move minimal version to 3.9 due to the current status of other
Python scripts. 

[1] https://docs.python.org/3/whatsnew/3.12.html#pep-701-syntactic-formalization-of-f-strings

> I think rewording the summary to
> 
>   "scripts/get_abi.py: make it backward-compatible with Python <3.11"
> 
> would resolve Jon's confusion.

Sure, but IMO it is still valuable to say somewhere that the script
was tested and it is known to work since Python 3.6.

> 
> I haven't looked into python3'changelog, but it might be
> "... backward-compatible with Python <3.12".
> Mauro, which python3 release extended the f-string implementation?

See above. I only did a quick check, but it sounds that 3.12 is the
one that finally implemented f-strings properly in a similar way to
what Perl 5 does with $'expression' inside strings.

Thanks,
Mauro

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ