    Version 3.0.1

2019-08-17  YiFei Zhu  <zhuyifei1999@gmail.com>

    * Ported to Python 3
    * Multiple interpreter support disabled.
    * Classifier byclass removed. There are no more old style classes.
    * Extended C integer size to work on 64 bit Windows machines.
    * Many minor changes.

    Version 0.1.10

2013-04-24  Sverker Nilsson  <sverker@sverker-laptop>

    * Support for Python 2.7
    However, there are still some problems with the tests
    that I haven't been able to sort out.

    * Some minor bug fixes


2011-05-24  Sverker Nilsson  <sverker@sverker-laptop>

    * src/heapy/hv_cli_dictof.c (hv_get_objects): New function that
    emulates gc_get_objects because of optimizations to the dict
    implementation which made them non-gc-tracked sometimes.

    (hv_cli_dictof_update_new_method): Relies on new function
    hv_get_objects to get at all dict objects in the heap.

2011-02-24  Sverker Nilsson  <sverker@sverker-laptop>

    * guppy/heapy/Part.py : Removed a failing assert in lack of a
    better solution. The result may perhaps differ sometimes from
    the true result, depending on the definition heap before/after.


2010-06-08  Sverker Nilsson  <sverker@sverker-laptop>

    * src/sets/bitset.c (mutbitset_iop_PyLongObject): Don't multiply
    with SHIFT if _PyLong_Frexp is used

    * guppy/heapy/test/test_Part.py (MixedCase.test_1): Changed the
    test result if sys.version >= 2.7; because the size of strings
    was optimized 8 bytes. (How ? )

    * src/sets/bitset.c (mutbitset_iop_PyLongObject): Used
    _PyLong_Frexp instead of _PyLong_AsScaledDouble if
    PY_VERSION_HEX >= 0x02070000 . (_PyLong_AsScaledDouble disappeared
    but I think I should complain, couldn't figure out how to add an
    issue with the tracker.)

2010-02-16  Sverker Nilsson  <sverker@sverker-laptop>

    * guppy/sets/test.py (Test.test16.tsv): Expected OverflowError
    instead of ValueError, an inconsequential change to do with
    possiboe test error reporting.

2010-02-15  Sverker Nilsson  <sverker@sverker-laptop>

    * guppy/heapy/test/test_Classifiers.py
    (SpecialCases.test_dictowner, SpecialCases.test_alt_retclaset):
    Changed to use clock() instead of time() for cpu time
    measurements. Added adaptive loop count as the time in some cases
    were down to 0.01 s - which may be the resolution of clock(). Now
    makes the time be about 0.5-1 s regardless of CPU speed.

    * guppy/heapy/test/test_Path.py (NewTestCase.test_1):
    Changed to use clock() instead of time() for cpu time measurements
    in a test that is not currently used, just in case we begin to use it.


2010-02-14  Sverker Nilsson  <sverker@sverker-laptop>

    * src/sets/nodeset.c (nodeset_op_set): Just an inconsequential
    change, it had two returns after each other.

    * src/sets/bitset.c (mutbitset_iop_PyLongObject):
    In the latest change where a loop over pos was added, changed type
    from int to NyBit.

    * src/sets/bitset.h: Checks endianness and defines macros to
    handle it.
    * src/sets/bitset.c (immbitset_long):
    * src/sets/bitset.c (mutbitset_iop_PyLongObject):
    Changes to work with big endian.

2010-01-02  Sverker Nilsson  <sverker@sverker-laptop>

    * guppy/etc/KnuthBendix.py
    (KnuthBendix.make_confluent.add_reduction): Added missing argument
    to % in error message

2009-08-30  Sverker Nilsson  <sverker@sverker-laptop>

    * guppy/heapy/Use.py (_GLUECLAMP_): Added loadall method

    Version 0.1.9

2009-06-23  Sverker Nilsson  <sverker@sverker-laptop>

    * specs/index.gsl: download mentions today's date

    * guppy/sets/test.py: Made it try numpy.random instead of
    RandomArray; revert to random if no numpy.random could be
    installed so more tests can get done albeit slower.

    * MANIFEST.in: added specs/*.py

    * ANNOUNCE : Added advertisement for http://sncs.se

2009-06-18  Sverker Nilsson  <sverker@sverker-laptop>

    * specs/index.gsl: Changed wording of tested pythons to exclude
    having tested with python2.3 in 32 bit mode.

    * src/sets/bitset.c (bits_first,bits_last): Changed to use #if
    directive to get rid of warnings in 32-bit mode.

    * src/sets/bitset.h (NyBits_N): Changed definition to use
    ULONG_MAX to be able to use it in preprocessor #if directive.

    * README (TEST): changed sample output to begin with test of sets.

    * setup.py (doit): long_description now starts with newline to
    look better in PKG-INFO

    * ANNOUNCE: added wordings about heapy_tutorial, pop bug and test.

    * guppy/heapy/test/test_all.py: added dependencies test

    * specs/index.gsl: Added heapy_tutorial link

    * specs/genguppydoc.py (GenGuppyDoc.gengsl): generate heapy_tutorial

    * specs/heapy_tutorial.gsl: new file

    * guppy/heapy/test/test_dependencies.py : new file

2009-06-16  Sverker Nilsson  <sverker@sverker-laptop>

    * specs/index.gsl: Added interactive help to example which was
    moved to documentation section.

    * src/sets/bitset.c (mutbitset_pop): changed type of i from NyBit to
    int to work in 64 bits with test7 in sets/test.py .
    (bits_last): made it work with 64 bits by testing the upper 32-bit half
    (bits_first): made it use NyBits_N instead of NyBits_64
    (bits_last):  made it use NyBits_N instead of NyBits_64 , NyBits_32
    (NyMutBitSet_pop): changed 1<<i to 1l<<i to work with 64 bits with
    test12 of test.py.

2009-06-12  Sverker Nilsson  <sverker@sverker-laptop>

    * ANNOUNCE: Tells about interactive help with example.

    * specs/index.gsl: Download section updated for 0.1.9. Credits
    added Yaroslav Halchenko.

2009-04-07  Sverker Nilsson  <sverker@sverker-laptop>

    * guppy/heapy/Monitor.py: made import readline optional

    * setup.py (doit): package_data uses *.html & *.jpg

2009-03-08  Sverker Nilsson  <sverker@sverker-laptop>

    * ANNOUNCE: news for 0.1.9

2009-01-09  Sverker Nilsson  <sverker@sverker-laptop>

    * guppy/gsl/Tester.py (TestOf.make_cat.get_example_expr): Made the
    example values be regenerated each time. (Unless 0 is true.)
    Affects speed sometimes (an extra function call per arg) but may
    also be faster.

    * guppy/heapy/Use.py (_GLUECLAMP_.load): changed usereadline to
    use_readline to correspond to doc .

    * guppy/heapy/Prof.py (Menu.delete): Removed commented-out lines
    to delete commands.

2008-11-03  Sverker Nilsson  <sverker@sverker-laptop>

    * guppy/heapy/UniSet.py (UniSet & IdentitySet): Removed several
    _get_xxx methods and put the definitions directly in properties as
    lambdas with docstrings (to clean up result of help()) .

2008-10-31  Sverker Nilsson  <sverker@sverker-laptop>

    * guppy/heapy/Prof.py (_GLUECLAMP.pb_): Added docstring

    * guppy/heapy/Monitor.py (monitor): Added docstring

    * guppy/heapy/UniSet.py (UniSet etc): Made the docstrings of _get_
    wording in terms of attributes rather than methods.

    * guppy/heapy/Use.py (_GLUECLAMP_): Added more dir/help

    * guppy/doc/__init__.py : Added more dir support

2008-10-28  Sverker Nilsson  <sverker@sverker-laptop>

    * src/sets/bitset.c (mutbitset_iop_PyLongObject): Made explit long
    cast to long for num_poses, to get rid of warning from MSVC.

    * setup.py: Removed extra_compile_args and extra_link_args vars.

    * src/heapy/heapy.h: Removed DL_IMPORT macro usage.

    * src/sets/sets_internal.h: Removed all DL_IMPORT macros.
      to get rid of warning from MSVC about inconsistent linkage.

2008-10-25  Sverker Nilsson  <sverker@sverker-laptop>

    * setup.py: Removed the extra compile args for MSWindows -
      they were only there for debugging.

2008-10-24  Sverker Nilsson  <sverker@sverker-laptop>

    * Added debug parameter to hpy().test() and made all test_main
      functions take that parameter. When true, it will be possible
      to look into the failure stack with pdb.pm() .

    * Added Chad Austin's patch for MSWINDOWS
      Made a temp os-determination. Have to check this out.
      Changed macro FILL to return -1 to get rid of warning in a set init.
      Made the initfunc in heapyc return an int to get rid of new warning.
      Moved & renamed macro to NYFILL in new file src/include/guppy.h
      which is intended to host general public guppy related includes.
      Made corresponding changes FILL->NYFILL where used.

2008-06-18  Sverker Nilsson  <sverker@sverker-laptop>

    * guppy/doc/__init__.py (Tab): Added tabs for different help
    browsing environments.

2008-06-17  Sverker Nilsson  <sverker@sverker-laptop>

    * guppy/doc/__init__.py (_GLUECLAMP_.help_instance): Added
    method. Also added Subject class.

    * guppy/heapy/UniSet.py (UniSet and subclasses): Added _help_url_
    attributes and _get_help which uses this via help_instance, but I
    began to think they should perhaps refer to the gsl kindnames
    instead.

    * guppy/doc/__init__.py (Document): Added class Document, various
    restructurings in progress

2008-05-22  Sverker Nilsson  <sverker@sverker-laptop>

    * README (License): Added modify and redistribute wording to
    the License for clarity, still refers to MIT license.

    * Removed ihelp pkg. Changes to various files to reflect
    ihelp->doc .

    * Moved ihelp.__init__.py into guppy/doc

    * Moved top-level doc dir into guppy package

    *  ihelp.__init__.py : continued improving text html rendering

2008-05-21  Sverker Nilsson  <sverker@sverker-laptop>

    * guppy/heapy/Spec.py:

    * guppy/gsl/Filer.py:

    * guppy/gsl/DottedTree.py:

    * guppy (docstring): Changed quotes to """ from ''' because I
    found pydoc.gui() (in Python 2.5) didn't recognize it otherwise.

    * guppy/etc/Glue.py (Share.getattr2): Made it try getattr3 with
    the CLAMP first even if it was a package.

2008-05-20  Sverker Nilsson  <sverker@sverker-laptop>

    *  (Default): Made ihelp directory and made guppy.help work first
    version.

    * guppy/etc/PrettyPrintHTML.py: Added

    * guppy/gsl/Html.py (Node2Html): visit_comment: Made it not
    output anything to the XHTML file.

2008-05-14  Sverker Nilsson  <sverker@sverker-laptop>

    *  (specs/index.gsl): Added external resources documentation
    section and two external links.

2008-04-09  Sverker Nilsson  <sverker@sverker-laptop>

    *  (changelog): Renamed to ChangeLog since Emacs insists on having
    it as default name.

    * MANIFEST: added specs/genguppydoc.py

    * specs/index.gsl: Made it use css, improved table layout for doc
    and download.
    Added doc/css/guppy.css


    Version 0.1.8


2008-04-08  Sverker Nilsson  <sverker@sverker-laptop>

    * guppy/gsl/Main.py (find_aspects_inseq): as->as_
      Several other GSL-related files as -> as_
      untabified setup.py to look better in pypi


    Version 0.1.7

2008-04-07  Sverker Nilsson  <sverker@sverker-laptop>

    * guppy/heapy/test/test_View.py (FirstCasetest_cal_hiding): as->as_

    * guppy/heapy/test/test_UniSet.py (FirstCase): as->asrt

    * guppy/sets/test.py (test_set_operations and others): as->as_

    * guppy/heapy/test/test_Classifiers.py (SpecialCases.test_2): as->asrt

    * guppy/heapy/Classifiers.py (SoKind.__hash__): added

    * For Python 2.6a2 ^^^

    * specs/index.gsl: Added commentary in download section
    referringing to svn as source of latest changes esp. 64 bit.


    * Added specs/genguppydoc.py, to be able to regenerate docs from
    svn'd files.

2008-04-05  Sverker Nilsson  <sverker@sverker-laptop>

    * guppy/heapy/test/test_Classifiers.py (SpecialCases):
    Relaxed the timing test in test_alt_retclaset with a factor 2
    from 2 to 4.

    * guppy/heapy/test/test_heapyc.py (TestHeapView):
    in test_timing:
    it failed in python2.3 64 bit, I removed the check for now,
    may check into this later...

    * src/sets/bitset.c (bits_first): Removed xxx etc from comment, no
    problem with being hardcoded for size and now tested with 64 bits.
    (sf_realloc): changed the update of v->lo and v->hi to use better
    defined pointer-arithmetic within allocated arrays. This solved a
    problem with 64 bit mode in (at least) Python 2.4. May be a
    coincidence that it seemed to work with 2.5.

2008-03-17  Sverker Nilsson  <sverker@sverker-laptop>

    * Several files, to make it complie without warnings in 32 bit
      mode.
      NyBit is now defined as Py_intptr_t and limits are calculated
      a'la pyport.h .

    * src/sets/bitset.h: using __LP64__ macro to indirectly define internal
      conditional flags, NyBits_32 resp. NyBits_64

    *  guppy/heapy/__init__.py : checked sys.maxint to detmine arch
       some size-dependent tests are relaxed if not 32-bit arch
    *  guppy/heapy/test_heapyc.py : relaxed a timing test

    * src/sets/nodeset.c &c. changed some more occurences of int to NyBit
      or perhaps they just became long in some place.

2008-03-13  Sverker Nilsson  <sverker@sverker-laptop>
    *  Starting modifications to work with 64 bits.
    *  guppy/src/sets/ (bitset.h, nodeset.c, bitset.c), maybe others,
    changes to especially the index type used as bit number in bitsets.
    Defining type NyBit for this and also NySize. They are just
    longs right now. Testing with Ubuntu 7.10 / AMD 64.

2007-02-16  Sverker Nilsson  <sverker@localhost>

    * Put it under svn. Changed to call it 0.1.7 in README and ANNOUNCE

2007-01-31  Sverker Nilsson  <sverker@localhost>

    * guppy/gsl/XHTML.py (Node2XHTML.visit_comment): Made it not
    output anything to the XHTML file.

2007-01-25  Sverker Nilsson  <sverker@localhost>

    * guppy/gsl/Document.py (_GLUECLAMP_.output_handlers): Added XHTML entry
    (Document.visit_output): Made the output mode specification case-insensitive.

    * guppy/gsl: Added XHTML.py module - initially a copy of Html.py.
    I am changing to be more conventional(?) - to use all upper case
    in the XHTML name since that is how it is written looks in
    documents on the web. (Is this contrary to Python conventions to
    use Capitalized names?) But it would be too weird to write Xhtml
    (or even worse XHtml) vs XHTML.

2006-11-08  Sverker Nilsson  <sverker@localhost>

    * guppy/gsl/Html.py (Node2Html.__init__): Changed (default,
    still fixed) encoding to utf-8.


    Version 0.1.6

2006-10-13  Sverker Nilsson  <sverker@localhost>

    * guppy/heapy/Use.py (_GLUECLAMP_._get_Root): This is what the
    method should have been called, not get_RS that it became
    yesterday.

    Version 0.1.5

2006-10-12  Sverker Nilsson  <sverker@localhost>

    * guppy/gsl/Document.py: Made some changes wrt dl/dt/dd to make
    the generated HTML code be more standards compliant, fixing
    rendering problems occuring AFAIK at least using Firefox.

    * guppy/gsl/Html.py: Fixed a problem with generated comments.

    * guppy/heapy/Remote.py (on): Made the site module be imported
    before Remote, to make it work in a normal installation when
    PYTHONPATH does not contain the guppy package. Had to change the
    recursion stopping flag to not be in the Remote module; now put in
    sys.

    (Annex) made h be a shorthand for hp in the remote interpreter, to
    be consistent with new abridged example style.

    * guppy/heapy/UniSet.py: Made sp be a shorthand for shpaths,
    because it is such a commonly used attribute.

    * guppy/heapy/[test_Path,test_ER].py : Made check of test results
    fit changes made to Path.py resp. Use.py

    * guppy/heapy/Use.py : Added RS attribute, to work with changes
    in Path.py. Changed default reprefix to be 'hpy().' , to be more
    meaningful in most cases.

    * guppy/heapy/Path.py (_GLUECLAMP_.shpgraph): Made the source name
    be derived from the Root attribute of the global hpy() instance in
    the normal case when the root is RootSTate -- to describe the path
    unambiguosly and show how it may be used.

    Version 0.1.4

2006-10-11  Sverker Nilsson  <sverker@localhost>

    * guppy/heapy/View.py (obj_at): Uses new obj_at method in
    immnodeset objects, to handle compatibility issues between Python
    versions and also be much faster.

    (referrers): After updating referrers, now checks that the domain
    of referrer graph was really covering the objects it should, and
    otherwise prints an error message and calls the debugger. -- I
    don't know when this should happen, the problem might have been
    due to a compilation version error, but I am letting the check
    left in.

    * guppy/etc/Glue.py: Checked ImportError message to see if it was
    a clean ImportError (No module named %s) in which case it proceeds
    as usual but otherwise the error is reported (showing the cause of
    the error)

    Changed '0x%x' to hex() to get rid of a compatibility warning

    Added more informative message text when an AttributeError is
    raised from getting an attribute from a module.

    * src/heapy/stdtypes.c (frame_relate): Replaced use of f_nlocals,
    f_ncells and f_nfreevars with values calculated from tuple sizes
    and co_nlocals, because in 2.5 the fields are removed in frames.
    (frame_traverse): Similarly removed use of f_nlocals.

    (type_traverse and type_relate): Changed name of slots to ht_slots
    if Python version >= 2.5.

    * src/sets/bitset.c: Removed use of type intintargfunc which is
    depreciated in Python2.5.

    * src/sets/immnodeset.c: Added obj_at method to immutable
    nodesets, to solve problems occuring when using id() in different
    versions of Python (2.5 sometimes returns long ints) in the obj_at
    method in View.py; the C method is cleaner and much faster based
    on binary search.

    * src/sets/nodeset.c: Made a pointer comparison compare cast to
    Py_uintptr_t instead of pointers directly, to be more well defined
    since the pointers are to different objects.
    Removed the use of type intintargfunc which is depreciated in
    Python2.5.


2006-10-09  Sverker Nilsson  <sverker@localhost>

    * guppy/heapy/test/test_Classifiers.py: Increased the number of
    loops in a time test from 10 to 100 to get better precision on
    faster machines. Removed a few tests that failed in newer Python
    depending on different object representation. Changed the use of
    er.classifier.partition(li.nodes) to li.by(er).partition to make
    a testcloser to what would be used by the user. Added a debug
    parameter to test_main.

    * guppy/heapy/test/test_ER.py: Removed / commented out the many
    printouts, added missing tests when feasible, changed assert
    statements to self.assert_ calls, changed initial comments in test
    methods to doc strings to make test printout more informative.


    * guppy/heapy/test/test_heapyc.py: Removed some timing
    printouts. I think I could add some tests there instead but it is
    tricky to be portable and stable.


    * guppy/heapy/test/test_Path.py (chkrel): Made it handle the case
    where several relation edges were found, despite only one was
    originally expected, because this happened because of sharing
    introduced (likely by some optimization) in Python 2.5. Added
    debug parameter to test_main and run_test.

    * guppy/heapy/test/Use.py: Added test() method which will test all
    of heapy - easier to remember and write than ... whatever I had to
    write before.

2006-10-05  Sverker Nilsson  <sverker@localhost>

    * guppy/heapy/Classifiers.py: Uses str2int for conversion to
    handle differences between Python versions.

    * guppy/etc/etc.py: Added str2int function to have a single place
    to handle conversion of (hexadecimal) strings to integers - as it
    became more complicated when handling all Python versions 2.3 -
    2.5.


2006-10-02  Sverker Nilsson  <sverker@localhost>

    * guppy/gsl/SpecNodes.py: Added get_arg method. Changed a use of 0
    to False for clarity. Corrected context handling in
    errmsg_context. Made get_line open a read from a file when
    possible.

2006-07-21  Sverker Nilsson  <sverker@localhost>

    * Changed the comment in docexample so as to show that comments do
    not need to have .c at the beginning of each line.
    ( Noting that the generated document seems a bit 'naked' can use
    some more heading and some back-link to top, next etc.

2006-06-22  Sverker Nilsson  <sverker@localhost>

    * In gsl/Html.py, generalized the handling of header tags
    to allow for spec of links. Added charset specification
    to comply with W3C tests.

    Version 0.1.3

2006-03-02  Sverker Nilsson  <sverker@localhost>

    * In View, changed usage ArgSet -> Kind

2006-02-17  Sverker Nilsson  <sverker@localhost>

    * In Remote.py, changed the on() function to not do anything if it
    was called from within the annex thread itself. Changed RM.py to
    NOT do this check. (Structural/implementation cleanup details.)

    * In UniSet, changed name ArgSet -> Kind
      (Implementation / documentation detail)

2006-02-14  Sverker Nilsson  <sverker@localhost>

    * Fixed bug with array sizing for Python 2.4 (in stdtypes.h)
      Added test for this case (to test_View.py)

2006-02-07  Sverker Nilsson  <sverker@localhost>

    *  Added type_traverse to stdtypes
       because the GC one didnt work with 2.4.2 in debug mode
       (It checked for heap type with assert.)
    * Changed usages of '0x%x'%addr to hex(addr) to make valid
      hex literals in Python2.4.

2006-02-06  Sverker Nilsson  <sverker@localhost>

    * Added Monitor command to interrupt the remote process.
      (The ki command.) It can still not interrupt it at all times.

    * Made end of file exit the monitor. (Otherwise may be infinite
      loop for file input)

    * Made Monitor use threading rather than thread because the
      program exited more cleanly in newer Pythons for some reason.


2006-02-05  Sverker Nilsson  <sverker@localhost>

    * Reverted the change to heapg but added a depreciated warning
    * Added the heapu method - a slightly better name
      It finds the referred objects i.e. strings as well
    * Made the representation of a Stat indicate itself as such
      to differentiate from repr of sets.
    * Made the sort order of stat diff be what it claimed (largest
    first)
    * Fixed Monitor so it passes empty commands along
      so multi-line commands can be used in remote interpreter.
    * Changed the command string for quitting an interactive console
      since 'q' is valid syntax
      changed to: '-'

2006-02-03  Sverker Nilsson  <sverker@localhost>

    * Added priming of list and tuple iterators
      so their slot wrappers dont suddenly show up unreachable.
    * Made heapg return just  .byclass.stat
      to safeguard against common subtle problems.
    * Added one-time initialization in View.heap
    * Added ref option to reference pattern creator
    * Dropped the usage of 'observation containers' in heapg
      since it is too brittle.
    * Uncommented call to deletecommand in fixed Menu in Prof.py
    * Added dump method to IdentitySet
    * Added Use.setrel

2006-02-01  Sverker Nilsson  <sverker@localhost>

    * Made help text of get_rp use shorter lines and added some
      missing help text. Wrapped some other program lines.
    * Stopkind in rp should be independent on classifier
      try eg using er=h.Type. Change to RefPat.

2006-01-23  Sverker Nilsson  <sverker@localhost>

    * Added some comments to C code (heapdef.h)
    * Have added some method to SpecNode (copy)


    0.1.2

2006-01-17  Sverker Nilsson  <sverker.is@home.se>

    Primary Bugs

    * Fixed a pointer comparison bug in nodegraph.c ,
      which made a test fail in my new system
      (with Linux 2.6.12-9-386) and could effect the outcome
      of algorithms such as the shortest path.

    * Fixed the address comparison in View.obj_at so it
      handles unsigned addresses.

    Test Portability Issues

    * Made test_via in test_Classifiers work in Python 2.4
      getting around the optimization of tuple constants.
    * Relaxed guppy.heapy.test.test_Classifiers.RenderCase
      since it was picky and list size changed in Python 2.4 .
    * Relaxed test_Path.test_nodeset_relation
      since it wasn't portable across different kernel versions.
    * Fixed a test bug in sets/test.py where the range
      step became zero with faster=0.


guppy-0.1.1

2005-12-01  Sverker Nilsson  <sverker.is@home.se>
    *  Changed C code to be ANSI compatible
    *  Changed some outdated help text

guppy-0.1

2005-11-25  Sverker Nilsson  <sverker.is@home.se>
    *  Initial version
