On 4 Oct 2013 06:08, "Victor Stinner" <victor.stinner@gmail.com> wrote:
>
> 2013/10/3 Christian Heimes <christian@python.org>:
> > A hash algorithm can be added and one avaible hash
> > algorithm can be set before Py_Initialize() is called for the first
> > time.
>
> "Py_Initialize" is not the good guard. Try for example "python3 -X
> faulthandler": PyObject_Hash() is called before Py_Initialize() to add
> "faulthandler" key into sys._xoptions dictionary.
>
> Today many Python internal functions are used before Python is
> initialized... See the PEP 432 which proposes to improve the
> situation:
> http://www.python.org/dev/peps/pep-0432/

That problem exists because our main function doesn't follow the C API usage rules, though. We require other embedding applications to be better behaved than that if they want support :)

That said, while I'm mostly in favour of the PEP, I think setting the algorithm should be a private API for 3.4.

I do agree that since the platform support for SipHash is slightly narrower,  we need to keep the existing hash algorithm around, make it relatively easy to enable and ensure we continue to test it on the build bots.

I believe that last requirement for buildbot testing is the one that should drive the design of the private configuration API.

Cheers,
Nick.

>
> Victor
> _______________________________________________
> Python-Dev mailing list
> Python-Dev@python.org
> https://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: https://mail.python.org/mailman/options/python-dev/ncoghlan%40gmail.com