Matt Joiner <anacro...@gmail.com> added the comment:

> * it incorporate the recent lru_cache algorithmic updates (moving the root 
> around the circular queue to re-use old links).

The existing C patch already does this.

> * it shows which parts should be implemented in C using a regular type and 
> shows how to call it from pure python.
 
The existing patch already did this.

> * it gives hints on use of #defines and PyDict_GetItem

I'm familiar with C. I've retained PyDict_GetItemWithError so as not to 
suppress typing errors from keys constructed from bad arguments from the user.

> * the critical sections are marked so you can use the GIL rather than using 
> locks.

The existing patch is already using the GIL, it didn't have any locks.

> * there are hints for what datatypes to use (only the hits and misses need 
> the ability to grow beyond sys.maxsize).

The existing patch already had this.

> * it shows how to access the named tuple from within the C code (using a 
> straight PyObject_Call).

I incorporated this.

> * this code passes the test suite and should be directly translatable (and 
> very fast).

So did the old code.

> * please follow the model and use PyList objects instead of C structure for 
> links

I've left this as is, the linked list in C is idiomatic, avoids a lot of 
branching and reference counting and is also more readable than the equivalent 
C/Python.

----------
Added file: http://bugs.python.org/file25094/functools.lru_cache-in-c.patch

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue14373>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to