FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

gh-141004: Document `Py_HASH_*` macros by picnixz · Pull Request #141205 · python/cpython · GitHub

/ cpython Public
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension .rst  (1) All 1 file type selected
Viewed files
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Unified
Split
Hide whitespace
Diff view
Unified
Split
Hide whitespace
54 changes: 53 additions & 1 deletion Doc/c-api/hash.rst
Comment thread
ZeroIntensity marked this conversation as resolved.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -11,42 +11,94 @@ See also the :c:member:`PyTypeObject.tp_hash` member and :ref:`numeric-hash`.

.. versionadded:: 3.2


.. c:type:: Py_uhash_t

Hash value type: unsigned integer.

.. versionadded:: 3.2


.. c:macro:: Py_HASH_ALGORITHM

A numerical value indicating the algorithm for hashing of :class:`str`,
:class:`bytes`, and :class:`memoryview`.

The algorithm name is exposed by :data:`sys.hash_info.algorithm`.

.. versionadded:: 3.4


.. c:macro:: Py_HASH_FNV
Py_HASH_SIPHASH24
Py_HASH_SIPHASH13

Numerical values to compare to :c:macro:`Py_HASH_ALGORITHM` to determine
which algorithm is used for hashing. The hash algorithm can be configured
via the configure :option:`--with-hash-algorithm` option.

.. versionadded:: 3.4
Add :c:macro:`!Py_HASH_FNV` and :c:macro:`!Py_HASH_SIPHASH24`.

.. versionadded:: 3.13
Comment thread
picnixz marked this conversation as resolved.
Add :c:macro:`!Py_HASH_SIPHASH13`.


.. c:macro:: Py_HASH_CUTOFF

Buffers of length in range ``[1, Py_HASH_CUTOFF)`` are hashed using DJBX33A
Comment thread
picnixz marked this conversation as resolved.
instead of the algorithm described by :c:macro:`Py_HASH_ALGORITHM`.

- A :c:macro:`!Py_HASH_CUTOFF` of 0 disables the optimization.
- :c:macro:`!Py_HASH_CUTOFF` must be non-negative and less or equal than 7.

32-bit platforms should use a cutoff smaller than 64-bit platforms because
it is easier to create colliding strings. A cutoff of 7 on 64-bit platforms
and 5 on 32-bit platforms should provide a decent safety margin.

.. versionadded:: 3.4


.. c:macro:: PyHASH_MODULUS

The `Mersenne prime <https://en.wikipedia.org/wiki/Mersenne_prime>`_ ``P = 2**n -1``, used for numeric hash scheme.
The `Mersenne prime <https://en.wikipedia.org/wiki/Mersenne_prime>`_ ``P = 2**n -1``,
used for numeric hash scheme.
This corresponds to the :data:`sys.hash_info.modulus` constant.

.. versionadded:: 3.13


.. c:macro:: PyHASH_BITS

The exponent ``n`` of ``P`` in :c:macro:`PyHASH_MODULUS`.
This corresponds to the :data:`sys.hash_info.hash_bits` constant.

.. versionadded:: 3.13


.. c:macro:: PyHASH_MULTIPLIER

Prime multiplier used in string and various other hashes.

.. versionadded:: 3.13


.. c:macro:: PyHASH_INF

The hash value returned for a positive infinity.
This corresponds to the :data:`sys.hash_info.inf` constant.

.. versionadded:: 3.13


.. c:macro:: PyHASH_IMAG

The multiplier used for the imaginary part of a complex number.
This corresponds to the :data:`sys.hash_info.imag` constant.

.. versionadded:: 3.13


.. c:type:: PyHash_FuncDef

Hash function definition used by :c:func:`PyHash_GetFuncDef`.
Expand Down
Loading

Back | FazBrowse Home | New Git URL