Skip to content

make docstring in C const #80822

Closed
Closed

Description

@methane
BPO 36641
Nosy @vstinner, @methane, @serhiy-storchaka
PRs
  • bpo-36641: Add "const" to PyDoc_VAR macro #12854
  • Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

    Show more details

    GitHub fields:

    assignee = None
    closed_at = <Date 2019-04-16.23:41:02.942>
    created_at = <Date 2019-04-16.12:05:17.472>
    labels = ['interpreter-core', '3.8']
    title = 'make docstring in C const'
    updated_at = <Date 2019-04-16.23:41:02.942>
    user = 'https://github.com/methane'

    bugs.python.org fields:

    activity = <Date 2019-04-16.23:41:02.942>
    actor = 'methane'
    assignee = 'none'
    closed = True
    closed_date = <Date 2019-04-16.23:41:02.942>
    closer = 'methane'
    components = ['Interpreter Core']
    creation = <Date 2019-04-16.12:05:17.472>
    creator = 'methane'
    dependencies = []
    files = []
    hgrepos = []
    issue_num = 36641
    keywords = ['patch']
    message_count = 3.0
    messages = ['340333', '340335', '340371']
    nosy_count = 3.0
    nosy_names = ['vstinner', 'methane', 'serhiy.storchaka']
    pr_nums = ['12854']
    priority = 'normal'
    resolution = 'fixed'
    stage = 'resolved'
    status = 'closed'
    superseder = None
    type = None
    url = 'https://bugs.python.org/issue36641'
    versions = ['Python 3.8']

    Activity

    1. methane commented on Apr 16, 2019

      @methane
      MemberAuthor

      In most case, docstring in C is constant.
      Can we add "const"? If we can, it can avoid allocating and copying several KBs.

      --- a/Include/pymacro.h
      +++ b/Include/pymacro.h
      @@ -69,4 +69,4 @@
       /* Define macros for inline documentation. */
      -#define PyDoc_VAR(name) static char name[]
      +#define PyDoc_VAR(name) static const char name[]
       #define PyDoc_STRVAR(name,str) PyDoc_VAR(name) = PyDoc_STR(str)
       #ifdef WITH_DOC_STRINGS

      Some drastic impacts:

      before:
      text data bss dec hex filename
      110446 57371 96 167913 28fe9 Modules/posixmodule.o
      91937 32236 208 124381 1e5dd build/temp.linux-x86_64-3.8/home/inada-n/work/python/cpython/Modules/_decimal/_decimal.o
      61070 31534 472 93076 16b94 build/temp.linux-x86_64-3.8/home/inada-n/work/python/cpython/Modules/_cursesmodule.o

      after:
      $ size **/*.o
      text data bss dec hex filename
      150761 17064 96 167921 28ff1 Modules/posixmodule.o
      115213 8976 208 124397 1e5ed build/temp.linux-x86_64-3.8/home/inada-n/work/python/cpython/Modules/_decimal/_decimal.o
      86878 5736 472 93086 16b9e build/temp.linux-x86_64-3.8/home/inada-n/work/python/cpython/Modules/_cursesmodule.o

    2. methane commented on Apr 16, 2019

      @methane
      MemberAuthor

      Without any configure options:

      $ size python python-const
         text    data     bss     dec     hex filename
      2980860  448880  131672 3561412  3657c4 python
      3185372  244464  131664 3561500  36581c python-const
    3. methane commented on Apr 16, 2019

      @methane
      MemberAuthor

      New changeset 926b0cb by Inada Naoki in branch 'master':
      bpo-36641: Add "const" to PyDoc_VAR macro (GH-12854)
      926b0cb

    4. transferred this issue fromon Apr 10, 2022
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

    Metadata

    Metadata

    Assignees

    No one assigned

      Labels

      3.8 (EOL)end of lifeinterpreter-core(Objects, Python, Grammar, and Parser dirs)

      Projects

      No projects

        Milestone

        No milestone

        Relationships

        None yet

        Development

        No branches or pull requests

        Issue actions