Commit Graph

319 Commits

Author SHA1 Message Date
Victor Stinner
d3f0882dfb Issue #14744: Use the new _PyUnicodeWriter internal API to speed up str%args and str.format(args)
* Formatting string, int, float and complex use the _PyUnicodeWriter API. It
   avoids a temporary buffer in most cases.
 * Add _PyUnicodeWriter_WriteStr() to restore the PyAccu optimization: just
   keep a reference to the string if the output is only composed of one string
 * Disable overallocation when formatting the last argument of str%args and
   str.format(args)
 * Overallocation allocates at least 100 characters: add min_length attribute
   to the _PyUnicodeWriter structure
 * Add new private functions: _PyUnicode_FastCopyCharacters(),
   _PyUnicode_FastFill() and _PyUnicode_FromASCII()

The speed up is around 20% in average.
2012-05-29 12:57:52 +02:00
Victor Stinner
3065093bb3 long_to_decimal_string() and _PyLong_Format() check the consistency of newly
created strings using _PyUnicode_CheckConsistency() in debug mode
2012-04-26 00:37:21 +02:00
Mark Dickinson
9a359bd97f Issue #14630: Merge fix from 3.2. 2012-04-20 21:44:09 +01:00
Mark Dickinson
bcc17eefd2 Issue #14630: Fix an incorrect access of ob_digit[0] for a zero instance of an int subclass. 2012-04-20 21:42:49 +01:00
Mark Dickinson
e28465482c Issue #14339: Improve speed of bin, oct and hex builtins. Patch by Serhiy Storchaka (with minor modifications). 2012-04-20 21:21:24 +01:00
Mark Dickinson
8d48b43ea9 Issue #12965: Fix some inaccurate comments in Objects/longobject.c. Thanks Stefan Krah. 2011-10-23 20:47:14 +01:00
Victor Stinner
639418812f Use the new Py_ARRAY_LENGTH macro 2011-09-29 00:42:28 +02:00
Martin v. Löwis
d63a3b8beb Implement PEP 393. 2011-09-28 07:41:54 +02:00
Stefan Krah
2d78a87e2e Merge fix for issue #12963. 2011-09-12 16:24:48 +02:00
Stefan Krah
b77c6c65c0 Issue #12963: PyLong_AsSize_t() now returns (size_t)-1 in all error cases. 2011-09-12 16:22:47 +02:00
Nadeem Vawda
3d5881ec2b Issue #12909: Make PyLong_As* functions consistent in their use of exceptions.
PyLong_AsDouble() and PyLong_AsUnsignedLongLong() now raise TypeError (rather
than SystemError) when passed a non-integer argument, matching the behavior of
all the other PyLong_As*() functions.
2011-09-07 21:40:26 +02:00
Brian Curtin
dfc80e3d97 Replace Py_NotImplemented returns with the macro form Py_RETURN_NOTIMPLEMENTED.
The macro was introduced in #12724.
2011-08-10 20:28:54 -05:00
Ezio Melotti
3b3499ba69 #11565: Merge with 3.1. 2011-03-16 11:35:38 +02:00
Ezio Melotti
13925008dc #11565: Fix several typos. Patch by Piotr Kasprzyk. 2011-03-16 11:05:33 +02:00
Ezio Melotti
4969f709cc #11515: Merge with 3.1. 2011-03-15 05:59:46 +02:00
Ezio Melotti
42da663e6f #11515: fix several typos. Patch by Piotr Kasprzyk. 2011-03-15 05:18:48 +02:00
Mark Dickinson
c9fb3c6417 Fix indentation in Objects/longobject.c 2010-12-04 11:06:25 +00:00
Alexander Belopolsky
942af5a9a4 Issue #10557: Fixed error messages from float() and other numeric
types.  Added a new API function, PyUnicode_TransformDecimalToASCII(),
which transforms non-ASCII decimal digits in a Unicode string to their
ASCII equivalents.
2010-12-04 03:38:46 +00:00
Georg Brandl
71c23d4473 Include structseq.h in Python.h, and remove now-redundant includes in individual sources. 2010-11-30 09:30:54 +00:00
Benjamin Peterson
8035bc5c04 follow up to #9778: define and use an unsigned hash type 2010-10-23 16:20:50 +00:00
Benjamin Peterson
8f67d0893f make hashes always the size of pointers; introduce Py_hash_t #9778 2010-10-17 20:54:53 +00:00
Mark Dickinson
fa68a6188a Fix naming inconsistency. 2010-06-07 18:47:09 +00:00
Mark Dickinson
f9a5a8e0af Issue #2844: Make int('42', n) consistently raise ValueError for
invalid integers n (including n = -909).
2010-05-26 20:07:58 +00:00
Mark Dickinson
7f1bf8004d Issue #8817: Expose round-to-nearest variant of divmod in _PyLong_Divmod_Near
for use by the datetime module; also refactor long_round to use this function.
2010-05-26 16:02:59 +00:00
Mark Dickinson
dc787d2055 Issue #8188: Introduce a new scheme for computing hashes of numbers
(instances of int, float, complex, decimal.Decimal and
fractions.Fraction) that makes it easy to maintain the invariant that
hash(x) == hash(y) whenever x and y have equal value.
2010-05-23 13:33:13 +00:00
Mark Dickinson
cdd01d2ddb Merged revisions 81037 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r81037 | mark.dickinson | 2010-05-09 21:42:09 +0100 (Sun, 09 May 2010) | 1 line

  Wrap multiline macros in a 'do {} while(0)', for safety.
........
2010-05-10 21:37:34 +00:00
Mark Dickinson
22b20183d5 Merged revisions 81036 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r81036 | mark.dickinson | 2010-05-09 21:30:29 +0100 (Sun, 09 May 2010) | 1 line

  Post-detabification cleanup:  whitespace fixes and long line rewraps only.
........
2010-05-10 21:27:53 +00:00
Antoine Pitrou
7f14f0d8a0 Recorded merge of revisions 81032 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

................
  r81032 | antoine.pitrou | 2010-05-09 17:52:27 +0200 (dim., 09 mai 2010) | 9 lines

  Recorded merge of revisions 81029 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk

  ........
    r81029 | antoine.pitrou | 2010-05-09 16:46:46 +0200 (dim., 09 mai 2010) | 3 lines

    Untabify C files. Will watch buildbots.
  ........
................
2010-05-09 16:14:21 +00:00
Antoine Pitrou
f95a1b3c53 Recorded merge of revisions 81029 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r81029 | antoine.pitrou | 2010-05-09 16:46:46 +0200 (dim., 09 mai 2010) | 3 lines

  Untabify C files. Will watch buildbots.
........
2010-05-09 15:52:27 +00:00
Mark Dickinson
e97ecba241 Merged revisions 80961 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r80961 | mark.dickinson | 2010-05-08 09:01:19 +0100 (Sat, 08 May 2010) | 2 lines

  Issue #8659: Remove redundant ABS calls.  Thanks Daniel Stutzbach.
........
2010-05-08 08:03:09 +00:00
Stefan Krah
639e18410e Issue #8328: Silence Visual Studio warnings. 2010-04-07 10:20:34 +00:00
Stefan Krah
0091e5ecd0 Merged revisions 79885 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r79885 | stefan.krah | 2010-04-07 10:24:44 +0200 (Wed, 07 Apr 2010) | 1 line

  Issue #8328: Silence Visual Studio warnings.
........
2010-04-07 08:49:55 +00:00
Mark Dickinson
49a519c859 Merged revisions 79856 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r79856 | mark.dickinson | 2010-04-06 19:58:54 +0100 (Tue, 06 Apr 2010) | 1 line

  Silence a 'comparison between signed and unsigned integer expressions' gcc warning.
........
2010-04-06 19:02:54 +00:00
Mark Dickinson
3318d29d22 Merged revisions 79843-79844 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r79843 | mark.dickinson | 2010-04-06 17:46:09 +0100 (Tue, 06 Apr 2010) | 4 lines

  Issue #8259: Get rid of 'outrageous left shift count' error when
  left-shifting an integer by more than 2**31 on a 64-bit machine.  Also
  convert shift counts to a Py_ssize_t instead of a C long.
........
  r79844 | mark.dickinson | 2010-04-06 17:47:55 +0100 (Tue, 06 Apr 2010) | 1 line

  Misc/NEWS entry for r79843.
........
2010-04-06 16:53:17 +00:00
Mark Dickinson
bee1fb0f75 Merged revisions 78918,78920 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r78918 | mark.dickinson | 2010-03-13 11:34:40 +0000 (Sat, 13 Mar 2010) | 4 lines

  Issue #8014: Fix PyLong_As<c-integer-type> methods not to produce an
  internal error on non-integer input: they now raise TypeError instead.
  This is needed for attributes declared via PyMemberDefs.
........
  r78920 | mark.dickinson | 2010-03-13 13:23:05 +0000 (Sat, 13 Mar 2010) | 3 lines

  Issue #8014: Fix incorrect error checks in structmember.c, and re-enable
  previously failing test_structmember.py tests.
........
2010-04-06 15:44:57 +00:00
Mark Dickinson
431065247a Remove out-of-date comment about making ints and longs hash equal. 2010-03-19 12:38:03 +00:00
Mark Dickinson
d59b41641e Issue #8014: Fix PyLong_As<c-integer-type> methods not to produce an
internal error on non-integer input: they now raise TypeError instead.
This is needed for attributes declared via PyMemberDefs.
2010-03-13 11:34:40 +00:00
Mark Dickinson
078c2532e0 Move docstrings for long.to_bytes and long.from_bytes after the corresponding functions. 2010-01-30 18:06:17 +00:00
Mark Dickinson
93f562c4f9 Merged revisions 77842 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r77842 | mark.dickinson | 2010-01-30 10:08:33 +0000 (Sat, 30 Jan 2010) | 4 lines

  Issue #7767: Add new C-API function PyLong_AsLongLongAndOverflow, a
  long long variant of PyLong_AsLongAndOverflow.  Patch by Case Van
  Horsen.
........
2010-01-30 10:30:15 +00:00
Benjamin Peterson
0c0e229dd0 simplify string comparison of from_bytes/to_bytes 2010-01-09 21:50:11 +00:00
Alexandre Vassalotti
c36c3789de Issue #1023290: Added API for the conversion of longs to bytes and vice-versa. 2010-01-09 20:35:09 +00:00
Mark Dickinson
6ecd9e53ce Merged revisions 77234 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r77234 | mark.dickinson | 2010-01-02 14:45:40 +0000 (Sat, 02 Jan 2010) | 7 lines

  Refactor some longobject internals:  PyLong_AsDouble and _PyLong_AsScaledDouble
  (the latter renamed to _PyLong_Frexp) now use the same core code.  The
  exponent produced by _PyLong_Frexp now has type Py_ssize_t instead of the
  previously used int, and no longer needs scaling by PyLong_SHIFT.  This
  frees the math module from having to know anything about the PyLong
  implementation.  This closes issue #5576.
........
2010-01-02 15:33:56 +00:00
Mark Dickinson
cbb62745ac Merged revisions 77062 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r77062 | mark.dickinson | 2009-12-27 14:55:57 +0000 (Sun, 27 Dec 2009) | 2 lines

  Issue #1811:  Improve accuracy and consistency of true division for integers.
........
2009-12-27 15:09:50 +00:00
Mark Dickinson
309aa2dcb4 Keep PyLong_AsLongAndOverflow documentation and implementation in sync
between py3k and trunk;  merge new tests from trunk to py3k.
(See issue #7528.)
2009-12-21 12:37:06 +00:00
Mark Dickinson
0b9293f28b Fix error message, for consistency with messages for % and //, and for consistency with trunk 2009-12-07 19:34:59 +00:00
Antoine Pitrou
074e5ed974 Merge in the new GIL. 2009-11-10 19:50:40 +00:00
Mark Dickinson
27a87a2aa2 Merged revisions 75697 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r75697 | mark.dickinson | 2009-10-25 20:39:06 +0000 (Sun, 25 Oct 2009) | 3 lines

  Issue #1087418: Small performance boost for bitwise operations on longs.
  Initial patch by Gregory Smith;  some tweaks added.
........
2009-10-25 20:43:34 +00:00
Mark Dickinson
24f5785fea Merged revisions 75110 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r75110 | mark.dickinson | 2009-09-28 17:52:40 +0100 (Mon, 28 Sep 2009) | 9 lines

  Style/consistency/nano-optimization nit:  replace occurrences of
    (high_bits << PyLong_SHIFT) + low_bits with
    (high_bits << PyLong_SHIFT) | low_bits
  in Objects/longobject.c.  Motivation:
   - shouldn't unnecessarily mix bit ops with arithmetic ops (style)
   - this pattern should be spelt the same way thoughout (consistency)
   - it's very very very slightly faster: no need to worry about
     carries to the high digit (nano-optimization).
........
2009-09-28 17:54:52 +00:00
Mark Dickinson
1f7e18cd74 Silence compiler warning 2009-09-24 18:31:17 +00:00
Mark Dickinson
741984dc17 Merged revisions 75003 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r75003 | mark.dickinson | 2009-09-21 17:16:44 +0100 (Mon, 21 Sep 2009) | 1 line

  Silence MSVC compiler warnings.
........
2009-09-21 16:18:27 +00:00