This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2009年09月20日 11:29 by barry-scott, last changed 2022年04月11日 14:56 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| const_api_r75468.patch | barry-scott, 2009年10月17日 18:01 | Patch to add const to python API for strings | review | |
| const_api_r75619.patch | barry-scott, 2009年10月22日 19:30 | Patch to add const to python API for strings (2) | review | |
| Messages (13) | |||
|---|---|---|---|
| msg92890 - (view) | Author: Barry Alan Scott (barry-scott) * | Date: 2009年09月20日 11:29 | |
Many Python API functions are causing GCC to rightly complain that const char * strings are being passed to python functions that take char * but do not need to modify the args. g++ reports example.cxx:633: warning: deprecated conversion from string constant to ‘char*’ The example I encountered today, while testing PyCXX against G++ 4.2.1 on Mac OS X, was PyObject_CallMethod but it is not limited to this function. Would a patch help progress this issue? |
|||
| msg92917 - (view) | Author: Martin v. Löwis (loewis) * (Python committer) | Date: 2009年09月20日 20:50 | |
A patch would definitely help. Such a patch shouldn't whole-sale replace char with const char, but selectively only change locations where it is actually necessary and doesn't hurt. |
|||
| msg92931 - (view) | Author: Andreas Stührk (Trundle) * | Date: 2009年09月21日 11:08 | |
See also issue #1699259. |
|||
| msg92938 - (view) | Author: Barry Alan Scott (barry-scott) * | Date: 2009年09月21日 13:23 | |
I'd guess that this change can first be made against 2.7 and 3.2 so that API's do not change. Where do I find the source code to generate the patch against for 2.7 and 3.2? |
|||
| msg92940 - (view) | Author: R. David Murray (r.david.murray) * (Python committer) | Date: 2009年09月21日 13:55 | |
Take a look at http://www.python.org/dev, specifically the 'How to Get Started' article (which points you to the developer's FAQ, which explains how to do an anonymous checkout of the source). |
|||
| msg92942 - (view) | Author: R. David Murray (r.david.murray) * (Python committer) | Date: 2009年09月21日 14:02 | |
I'm setting the targets to 2.7/3.2 per the discussion in issue #1699259. Perhaps the question of whether or not it is "really" an API change could be revisited, but if so that would probably have to go through python-dev. |
|||
| msg94184 - (view) | Author: Barry Alan Scott (barry-scott) * | Date: 2009年10月17日 18:01 | |
Here is my 1st patch to allow const char * and const Py_UNICODE * It is agsinst http://svn.python.org/projects/python/trunk. What I have attempted to do is stop the public API of python needing char * or Py_UNICODE * where the API clearly does not need to modify the argument. I have only modified internal API where its necessary to provide a public const API. Please give feedback and let me know if you wish me raise anything with python dev. I'm happy to produce a 3.2 version of the patch after the 2.7 version is acceptable. Barry |
|||
| msg94189 - (view) | Author: Martin v. Löwis (loewis) * (Python committer) | Date: 2009年10月17日 20:52 | |
Without looking into the details: the places where you cast-away constness look wrong. Either the parameter shouldn't have been declared const, or the target of the assignment needs to be converted to const, too. If the cast is really legitimite, a comment needs to justify it (but then, I think I would still prefer not to change the parameter to const). |
|||
| msg94214 - (view) | Author: Barry Alan Scott (barry-scott) * | Date: 2009年10月18日 15:18 | |
I was trying to avoid changing the const ness of output parameters. Given the advice not to go mad on putting const everywhere. 1) I can comment the casts to maintain this goal. 2) Or change the output paramter const ness. Given your feedback I'm guessing you want me to go further with the use of const and do (2). Barry |
|||
| msg94223 - (view) | Author: Martin v. Löwis (loewis) * (Python committer) | Date: 2009年10月18日 20:03 | |
> 1) I can comment the casts to maintain this goal. > 2) Or change the output paramter const ness. > > Given your feedback I'm guessing you want me to go further with > the use of const and do (2). Ah, ok - as I said, I didn't look into detail further. IIUC, changing output parameters to const could break existing code (right?); this should be avoided absolutely. Rather than having the casts, I think I would prefer to take no action at these places; I recommend to discuss that on python-dev (some may argue in favor of changing output pointers to const if that is semantically correct). |
|||
| msg94368 - (view) | Author: Barry Alan Scott (barry-scott) * | Date: 2009年10月22日 19:30 | |
Updated patch with comment explaining cast. |
|||
| msg110580 - (view) | Author: Mark Lawrence (BreamoreBoy) * | Date: 2010年07月17日 16:34 | |
Drop 2.7 as it's gone. See also #1699259. |
|||
| msg323126 - (view) | Author: Berker Peksag (berker.peksag) * (Python committer) | Date: 2018年08月05日 00:57 | |
All changes (except PyUnicode_EncodeDecimal() which was deprecated in Python 3.3) have already been implemented in the following commits: * https://github.com/python/cpython/commit/c679227e31245b0e8dec74a1f7cc77710541d985 * https://github.com/python/cpython/commit/f308132cc29eea9b7fe899deb575d29d607a48f4 * https://github.com/python/cpython/commit/f0b463ad845c7433a0c561ef2c71d350f4b508c5 Closing this as 'out of date'. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:56:53 | admin | set | github: 51201 |
| 2018年08月05日 00:57:44 | berker.peksag | set | status: open -> closed nosy: + berker.peksag messages: + msg323126 resolution: out of date stage: resolved |
| 2014年02月03日 19:20:38 | BreamoreBoy | set | nosy:
- BreamoreBoy |
| 2010年07月17日 16:34:51 | BreamoreBoy | set | nosy:
+ BreamoreBoy messages: + msg110580 versions: - Python 2.7 |
| 2009年10月22日 19:30:18 | barry-scott | set | files:
+ const_api_r75619.patch messages: + msg94368 |
| 2009年10月18日 20:03:11 | loewis | set | messages: + msg94223 |
| 2009年10月18日 15:18:44 | barry-scott | set | nosy:
loewis, barry-scott, sebastinas, r.david.murray, Trundle messages: + msg94214 components: + Extension Modules, - Interpreter Core |
| 2009年10月17日 20:52:56 | loewis | set | messages: + msg94189 |
| 2009年10月17日 18:01:16 | barry-scott | set | files:
+ const_api_r75468.patch keywords: + patch messages: + msg94184 |
| 2009年09月21日 14:02:36 | r.david.murray | set | priority: normal messages: + msg92942 versions: + Python 2.7, Python 3.2, - Python 2.6, Python 3.1 |
| 2009年09月21日 13:55:24 | r.david.murray | set | nosy:
+ r.david.murray messages: + msg92940 |
| 2009年09月21日 13:23:14 | barry-scott | set | messages: + msg92938 |
| 2009年09月21日 11:40:30 | sebastinas | set | nosy:
+ sebastinas |
| 2009年09月21日 11:08:31 | Trundle | set | nosy:
+ Trundle messages: + msg92931 |
| 2009年09月20日 20:50:32 | loewis | set | nosy:
+ loewis messages: + msg92917 |
| 2009年09月20日 11:29:45 | barry-scott | create | |