[issue43868] Remove PyOS_ReadlineFunctionPointer from the stable ABI list

2021-04-27 Thread STINNER Victor


Change by STINNER Victor :


--
resolution:  -> fixed
stage: patch review -> resolved
status: open -> closed

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43868] Remove PyOS_ReadlineFunctionPointer from the stable ABI list

2021-04-23 Thread Petr Viktorin


Petr Viktorin  added the comment:


New changeset 91b69b77cf5f78de6d35dea23098df34b6fd9e53 by Petr Viktorin in 
branch 'master':
bpo-43868: Remove PyOS_ReadlineFunctionPointer from the stable ABI list 
(GH-25442)
https://github.com/python/cpython/commit/91b69b77cf5f78de6d35dea23098df34b6fd9e53


--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43868] Remove PyOS_ReadlineFunctionPointer from the stable ABI list

2021-04-16 Thread STINNER Victor


STINNER Victor  added the comment:

Yes, please remove it from the limited C API.

PyOS_ReadlineFunctionPointer has a bad API. I fixed recently PyOS_StdioReadline 
because it used the Python C API without holding the GIL. To acquire the GIL, 
you need to access a *private* _PyOS_ReadlineTState variable which is kind of 
unfortunate :-(

commit c353764fd564e401cf47a5d9efab18c72c60014e
Author: Victor Stinner 
Date:   Mon Jun 1 20:59:35 2020 +0200

bpo-40826: Fix GIL usage in PyOS_Readline() (GH-20579)

Fix GIL usage in PyOS_Readline(): lock the GIL to set an exception.

Pass tstate to my_fgets() and _PyOS_WindowsConsoleReadline(). Cleanup
these functions.

See also:

commit fa7ab6aa0f9a4f695e5525db5a113cd21fa93787
Author: Victor Stinner 
Date:   Wed Jun 3 14:39:59 2020 +0200

bpo-40826: Add _PyOS_InterruptOccurred(tstate) function (GH-20599)

my_fgets() now calls _PyOS_InterruptOccurred(tstate) to check for
pending signals, rather calling PyOS_InterruptOccurred().

my_fgets() is called with the GIL released, whereas
PyOS_InterruptOccurred() must be called with the GIL held.

test_repl: use text=True and avoid SuppressCrashReport in
test_multiline_string_parsing().

Fix my_fgets() on Windows: fgets(fp) does crash if fileno(fp) is closed.

--
nosy: +vstinner

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43868] Remove PyOS_ReadlineFunctionPointer from the stable ABI list

2021-04-16 Thread Petr Viktorin


Change by Petr Viktorin :


--
keywords: +patch
pull_requests: +24172
stage:  -> patch review
pull_request: https://github.com/python/cpython/pull/25442

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43868] Remove PyOS_ReadlineFunctionPointer from the stable ABI list

2021-04-16 Thread Petr Viktorin


New submission from Petr Viktorin :

The inclusion of PyOS_ReadlineFunctionPointer in python3dll.c (*) was a 
mistake. According to PEP 384:

> functions expecting FILE* are not part of the ABI, to avoid depending on a 
> specific version of the Microsoft C runtime DLL on Windows.

The situation may have changed and it might be reasonable to revisit this 
decision, but that would call for a larger discussion. There are FILE*-taking 
functions that are probably much ore useful than this one. (But, I think it's a 
good idea to limit the stable ABI to file-like Python objects anyway.)

I see PEP 384 as being definitive (where it's not ambiguous). The python3dll.c 
list and public/private headers do not actually define the stable ABI.

So, I'd like to remove the function from the list.


---

(*) it was actually PC/python3.def in 3.2

--
components: C API, Windows
messages: 391206
nosy: paul.moore, petr.viktorin, steve.dower, tim.golden, zach.ware
priority: normal
severity: normal
status: open
title: Remove PyOS_ReadlineFunctionPointer from the stable ABI list
versions: Python 3.10

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com