1. 03 Oct, 2001 6 commits
    • Skip Montanaro's avatar
      ae3b1258
    • Guido van Rossum's avatar
      *EXPERIMENTAL* speedup of slot_sq_item. This sped up the following · f4593e0b
      Guido van Rossum authored
      test dramatically:
      
          class T(tuple): __dynamic__ = 1
          t = T(range(1000))
          for i in range(1000): tt = tuple(t)
      
      The speedup was about 5x compared to the previous state of CVS (1.7
      vs. 8.8, in arbitrary time units).  But it's still more than twice as
      slow as as the same test with __dynamic__ = 0 (0.8).
      
      I'm not sure that I really want to go through the trouble of this kind
      of speedup for every slot.  Even doing it just for the most popular
      slots will be a major effort (the new slot_sq_item is 40+ lines, while
      the old one was one line with a powerful macro -- unfortunately the
      speedup comes from expanding the macro and doing things in a way
      specific to the slot signature).
      
      An alternative that I'm currently considering is sketched in PLAN.txt:
      trap setattr on type objects.  But this will require keeping track of
      all derived types using weak references.
      f4593e0b
    • Tim Peters's avatar
      1b0e5490
    • Tim Peters's avatar
      SF bug [#467336] doctest failures w/ new-style classes. · 17111f3b
      Tim Peters authored
      Taught doctest about static methods, class methods, and property docstrings
      in new-style classes.  As for inspect.py/pydoc.py before it, the new stuff
      needed didn't really fit into the old architecture (but was less of a
      strain to force-fit here).
      New-style class docstrings still aren't found, but that's the subject
      of a different bug and I want to fix that right instead of hacking around
      it in doctest.
      17111f3b
    • Guido van Rossum's avatar
      Mark treatment of binary operators for __rop__-before-__op__ as done. · f49a9134
      Guido van Rossum authored
      Add more detail about the speed optimizations needed for __dynamic__.
      The weak reference solution becomes more attractive...
      f49a9134
    • Guido van Rossum's avatar
      call_method(), call_maybe(): fix a performance bug: the argument · da21c011
      Guido van Rossum authored
      pointing to a static variable to hold the object form of the string
      was never used, causing endless calls to PyString_InternFromString().
      One particular test (with lots of __getitem__ calls) became a third
      faster with this!
      da21c011
  2. 02 Oct, 2001 12 commits
    • Guido van Rossum's avatar
      ed554f6f
    • Guido van Rossum's avatar
    • Tim Peters's avatar
      SF patch [#466616] Exclude imported items from doctest. · 4a9ac4a8
      Tim Peters authored
      Another installment; the new functionality wasn't actually enabled in
      normal use, only in the strained use checked by the test case.
      4a9ac4a8
    • Tim Peters's avatar
      SF bug [#467265] Compile errors on SuSe Linux on IBM/s390. · c15c4f1f
      Tim Peters authored
      Unknown whether this fixes it.
      - stringobject.c, PyString_FromFormatV:  don't assume that va_list is of
        a type that can be copied via an initializer.
      - errors.c, PyErr_Format:  add a va_end() to balance the va_start().
      c15c4f1f
    • Guido van Rossum's avatar
      Add Garbage Collection support to new-style classes (not yet to their · 048eb75c
      Guido van Rossum authored
      instances).
      
      Also added GC support to various auxiliary types: super, property,
      descriptors, wrappers, dictproxy.  (Only type objects have a tp_clear
      field; the other types are.)
      
      One change was necessary to the GC infrastructure.  We have statically
      allocated type objects that don't have a GC header (and can't easily
      be given one) and heap-allocated type objects that do have a GC
      header.  Giving these different metatypes would be really ugly: I
      tried, and I had to modify pickle.py, cPickle.c, copy.py, add a new
      invent a new name for the new metatype and make it a built-in, change
      affected tests...  In short, a mess.  So instead, we add a new type
      slot tp_is_gc, which is a simple Boolean function that determines
      whether a particular instance has GC headers or not.  This slot is
      only relevant for types that have the (new) GC flag bit set.  If the
      tp_is_gc slot is NULL (by far the most common case), all instances of
      the type are deemed to have GC headers.  This slot is called by the
      PyObject_IS_GC() macro (which is only used twice, both times in
      gcmodule.c).
      
      I also changed the extern declarations for a bunch of GC-related
      functions (_PyObject_GC_Del etc.): these always exist but objimpl.h
      only declared them when WITH_CYCLE_GC was defined, but I needed to be
      able to reference them without #ifdefs.  (When WITH_CYCLE_GC is not
      defined, they do the same as their non-GC counterparts anyway.)
      048eb75c
    • Tim Peters's avatar
      CVS patch [#466628] Doc changes for doctest patch (#466616), from · 0481d24d
      Tim Peters authored
      Tim Hochberg.  Doctest no longer searches imported objects.
      0481d24d
    • Guido van Rossum's avatar
      pickles(): · fe1fd0e6
      Guido van Rossum authored
      - The test for deepcopy() in pickles() was indented wrongly, so it got
        run twice (one for binary pickle mode, one for text pickle mode; but
        the test doesn't depend on the pickle mode).
      
      - In verbose mode, show which subtest (pickle/cPickle/deepcopy, text/bin).
      fe1fd0e6
    • Guido van Rossum's avatar
      The error reporting here was a bit sparse. In verbose mode, the code · c907bd89
      Guido van Rossum authored
      in run_test() referenced two non-existent variables, and in
      non-verbose mode, the tests didn't report the actual number, when it
      differed from the expected number.  Fixed this.
      
      Also added an extra call to gc.collect() at the start of test_all().
      This will be needed when I check in the changes to add GC to new-style
      classes.
      c907bd89
    • Guido van Rossum's avatar
      Under certain conditions (sometimes triggered by the test suite), · b855134a
      Guido van Rossum authored
      "from xml.parsers import expat" succeeds but the imported expat module
      is an empty shell.  Make sure we don't be fooled by that.
      b855134a
    • Guido van Rossum's avatar
      Correct the URL for the license (only used when the LICENSE[.txt] file · e37e96df
      Guido van Rossum authored
      is not found).  Being fancy: insert the first 3 characters of
      sys.version in the URL.
      e37e96df
    • Guido van Rossum's avatar
      Update reference to pydns. · 0e58ff8d
      Guido van Rossum authored
      0e58ff8d
    • Tim Peters's avatar
      SF patch [#466616] Exclude imported items from doctest, · 7402f791
      Tim Peters authored
      from Tim Hochberg.  Also mucho fiddling to change the way doctest
      determines whether a thing is a function, module or class.  Under 2.2,
      this really requires the functions in inspect.py (e.g., types.ClassType
      is close to meaningless now, if not outright misleading).
      7402f791
  3. 01 Oct, 2001 22 commits