Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

pkgin upgrade crashes with second repository #32

Open
Licenser opened this Issue · 8 comments

6 participants

Heinz N. Gies Claus Conrad Filip Hajny Jacques Marneweck iMil Brian Bennett
Heinz N. Gies

Hi I'm using a second repository in pkgin.
And it seems that with this repository pkgin crashes during the call of pkgin upgrade.

/opt/local/etc/pkgin/repositories.conf:

http://pkgsrc.joyent.com/sdc6/2012Q2/x86_64/All
http://release.project-fifo.net/pkg/dev/

I tested the following:
1) Having the default repo twice doesn't causes a crash.
2) The order of repos doesn't matter.
3) This isn't triggered when no packages are installed.

It might be a fault in the package description I'll look into that detail a bit later (packages in the 2nd repo are mine). So they do install fine, and I guess even with a missing field they should not SegFault the program :)

The coredump is here is the following: https://www.dropbox.com/s/l34sh3agxf4r1n6/core

Jonathan Perkin jperkin referenced this issue from a commit
asau Update to ABCL 1.2.1
Version 1.2.1
=============
http//abcl.org/svn/tags/abcl/1.2.1/CHANGES
27 June 2013
http://abcl.org/releases/1.2.1

*  Tested:  orcl-jdk-1.7.0_21 orcl-jdk-1.6.0_43

** ansi tests rc-2 failing 11-13 of 21708 total.
   Some regressions since 1.1.1

*  Stablility fixes; additional Quicklisp compatibility

** Fix (make-instance 'standard-generic-function)


Version 1.2.0
=============
http//abcl.org/svn/tags/1.2.0/abcl/CHANGES
released at ECLM 2013 Madrid, ES // 01 June 2013

   * Package local nicknames to behave like SBCL

   * ASDF 3.0.1 is now shipped with the implementation

   * a more robust MOP implementation

   * Common cases of creating purely synthetic JAVA:JNEW-RUNTIME-CLASS
     now (mostly) work.  Please report corner cases for fixing.

   * the system autoloader has been extended to cover functions bound to
     symbol properties

Issues Resolved
---------------

[#200]   ABCL compiler fails to produce loadable fasl for XPATH
[#321]   ASDF 3.01
[#256]   Compilation failure in com.informatimago
[#274]   compiling "com.informatimago.common-lisp.cesarum") hangs [> 10 minutes]
[#153]
 [#32]   Modify the currently disabled runtime-class.lisp code to not require ASM
[#152]   ql:closer-mop doesn't work
[#203]   Failure as build host for SBCL
[#300]   Gray streams aren't streams
[#302]   Symbols fail to autoload
[#303]   CL:LOAD ignores :EXTERNAL-FORMAT argument
[#304]   Stack abstraction inconsistency between Java and Lisp frames
[#308]   Compiled FLET exhausts the stack
[#309]   Printer should obey package-local nicknames
[#310]   Invocation of tests from from build.xml broken
[#311]   UIOP fails to upgrade
[#312]   BORDEAUX-THREADS-TEST::CONDITION-VARIABLE hangs
[#282]   Spurious macros redefinition warnings
9308e2b
Heinz N. Gies Licenser referenced this issue in NetBSDfr/pkgin
Closed

pkgin segfaults on upgrade #1

Filip Hajny mamash referenced this issue from a commit
wen Update to 1.4
Upstream changes:
1.4 (2013-07-23)

BACKWARD INCOMPATIBLE pip now only installs stable versions by default, and offers a new --pre option to also find pre-release and development versions. (Pull #834)
BACKWARD INCOMPATIBLE Dropped support for Python 2.5. The minimum supported Python version for pip 1.4 is Python 2.6.
Added support for installing and building wheel archives. Thanks Daniel Holth, Marcus Smith, Paul Moore, and Michele Lacchia (Pull #845)
Applied security patch to pip's ssl support related to certificate DNS wildcard matching (http://bugs.python.org/issue17980).
To satisfy pip's setuptools requirement, pip now recommends setuptools>=0.8, not distribute. setuptools and distribute are now merged into one project called 'setuptools'. (Pull #1003)
pip will now warn when installing a file that is either hosted externally to the index or cannot be verified with a hash. In the future pip will default to not installing them and will require the flags -allow-external NAME, and -allow-insecure NAME respectively. (Pull #985)
If an already-downloaded or cached file has a bad hash, re-download it rather than erroring out. (Issue #963).
pip bundle and support for installing from pybundle files is now considered deprecated and will be removed in pip v1.5.
Fixed a number of issues (#413, #709, #634, #602, and #939) related to cleaning up and not reusing build directories. (Pull #865, #948)
Added a User Agent so that pip is identifiable in logs. (Pull #901)
Added ssl and -user support to get-pip.py. Thanks Gabriel de Perthuis. (Pull #895)
Fixed the proxy support, which was broken in pip 1.3.x (Pull #840)
Fixed issue #32 - pip fails when server does not send content-type header. Thanks Hugo Lopes Tavares and Kelsey Hightower (Pull #872).
"Vendorized" distlib as pip.vendor.distlib (https://distlib.readthedocs.org/).
Fixed git VCS backend with git 1.8.3. (Pull #967)
f91ed83
Claus Conrad

Experiencing the same issue with "pkgin 0.6.3.1 for SunOS-5.11 x86_64 (using SQLite 3.7.15)". Has this been fixed?

Claus Conrad

Workaround:
1. Remove the second repository from /opt/local/etc/pkgin/repositories.conf
2. Run pkgin -f up

Filip Hajny
Owner

Simple: there's no official support for multiple repositories in pkgin (yet).

Jacques Marneweck

Filip: any idea when pkgin with officially support multiple repositories?

Filip Hajny
Owner

No idea. imil had it on his "list of things to do this summer" this year, but I haven't seen any signs of that list being worked on at all.

Jonathan Perkin jperkin referenced this issue from a commit
abs Updated devel/snappy to 1.0.5
------------------------------------------------------------------------
r60 | snappy.mirrorbot@gmail.com | 2012-02-23 18:00:36 +0100 (Thu, 23 Feb 2012) | 57 lines

For 32-bit platforms, do not try to accelerate multiple neighboring
32-bit loads with a 64-bit load during compression (it's not a win).

The main target for this optimization is ARM, but 32-bit x86 gets
a small gain, too, although there is noise in the microbenchmarks.
It's a no-op for 64-bit x86. It does not affect decompression.

Microbenchmark results on a Cortex-A9 1GHz, using g++ 4.6.2 (from
Ubuntu/Linaro), -O2 -DNDEBUG -Wa,-march=armv7a -mtune=cortex-a9
-mthumb-interwork, minimum 1000 iterations:

  Benchmark            Time(ns)    CPU(ns) Iterations
  ---------------------------------------------------
  BM_ZFlat/0            1158277    1160000       1000 84.2MB/s  html (23.57 %)    [ +4.3%]
  BM_ZFlat/1           14861782   14860000       1000 45.1MB/s  urls (50.89 %)    [ +1.1%]
  BM_ZFlat/2             393595     390000       1000 310.5MB/s  jpg (99.88 %)    [ +0.0%]
  BM_ZFlat/3             650583     650000       1000 138.4MB/s  pdf (82.13 %)    [ +3.1%]
  BM_ZFlat/4            4661480    4660000       1000 83.8MB/s  html4 (23.55 %)   [ +4.3%]
  BM_ZFlat/5             491973     490000       1000 47.9MB/s  cp (48.12 %)      [ +2.0%]
  BM_ZFlat/6             193575     192678       1038 55.2MB/s  c (42.40 %)       [ +9.0%]
  BM_ZFlat/7              62343      62754       3187 56.5MB/s  lsp (48.37 %)     [ +2.6%]
  BM_ZFlat/8           17708468   17710000       1000 55.5MB/s  xls (41.34 %)     [ -0.3%]
  BM_ZFlat/9            3755345    3760000       1000 38.6MB/s  txt1 (59.81 %)    [ +8.2%]
  BM_ZFlat/10           3324217    3320000       1000 36.0MB/s  txt2 (64.07 %)    [ +4.2%]
  BM_ZFlat/11          10139932   10140000       1000 40.1MB/s  txt3 (57.11 %)    [ +6.4%]
  BM_ZFlat/12          13532109   13530000       1000 34.0MB/s  txt4 (68.35 %)    [ +5.0%]
  BM_ZFlat/13           4690847    4690000       1000 104.4MB/s  bin (18.21 %)    [ +4.1%]
  BM_ZFlat/14            830682     830000       1000 43.9MB/s  sum (51.88 %)     [ +1.2%]
  BM_ZFlat/15             84784      85011       2235 47.4MB/s  man (59.36 %)     [ +1.1%]
  BM_ZFlat/16           1293254    1290000       1000 87.7MB/s  pb (23.15 %)      [ +2.3%]
  BM_ZFlat/17           2775155    2780000       1000 63.2MB/s  gaviota (38.27 %) [+12.2%]

Core i7 in 32-bit mode (only one run and 100 iterations, though, so noisy):

  Benchmark            Time(ns)    CPU(ns) Iterations
  ---------------------------------------------------
  BM_ZFlat/0             227582     223464       3043 437.0MB/s  html (23.57 %)    [ +7.4%]
  BM_ZFlat/1            2982430    2918455        233 229.4MB/s  urls (50.89 %)    [ +2.9%]
  BM_ZFlat/2              46967      46658      15217 2.5GB/s  jpg (99.88 %)       [ +0.0%]
  BM_ZFlat/3             115298     114864       5833 783.2MB/s  pdf (82.13 %)     [ +1.5%]
  BM_ZFlat/4             913440     899743        778 434.2MB/s  html4 (23.55 %)   [ +0.3%]
  BM_ZFlat/5             110302     108571       7000 216.1MB/s  cp (48.12 %)      [ +0.0%]
  BM_ZFlat/6              44409      43372      15909 245.2MB/s  c (42.40 %)       [ +0.8%]
  BM_ZFlat/7              15713      15643      46667 226.9MB/s  lsp (48.37 %)     [ +2.7%]
  BM_ZFlat/8            2625539    2602230        269 377.4MB/s  xls (41.34 %)     [ +1.4%]
  BM_ZFlat/9             808884     811429        875 178.8MB/s  txt1 (59.81 %)    [ -3.9%]
  BM_ZFlat/10            709532     700000       1000 170.5MB/s  txt2 (64.07 %)    [ +0.0%]
  BM_ZFlat/11           2177682    2162162        333 188.2MB/s  txt3 (57.11 %)    [ -1.4%]
  BM_ZFlat/12           2849640    2840000        250 161.8MB/s  txt4 (68.35 %)    [ -1.4%]
  BM_ZFlat/13            849760     835476        778 585.8MB/s  bin (18.21 %)     [ +1.2%]
  BM_ZFlat/14            165940     164571       4375 221.6MB/s  sum (51.88 %)     [ +1.4%]
  BM_ZFlat/15             20939      20571      35000 196.0MB/s  man (59.36 %)     [ +2.1%]
  BM_ZFlat/16            239209     236544       2917 478.1MB/s  pb (23.15 %)      [ +4.2%]
  BM_ZFlat/17            616206     610000       1000 288.2MB/s  gaviota (38.27 %) [ -1.6%]

R=sanjay

------------------------------------------------------------------------
r59 | snappy.mirrorbot@gmail.com | 2012-02-21 18:02:17 +0100 (Tue, 21 Feb 2012) | 107 lines

Enable the use of unaligned loads and stores for ARM-based architectures
where they are available (ARMv7 and higher). This gives a significant
speed boost on ARM, both for compression and decompression.
It should not affect x86 at all.

There are more changes possible to speed up ARM, but it might not be
that easy to do without hurting x86 or making the code uglier.
Also, we de not try to use NEON yet.

Microbenchmark results on a Cortex-A9 1GHz, using g++ 4.6.2 (from Ubuntu/Linaro),
-O2 -DNDEBUG -Wa,-march=armv7a -mtune=cortex-a9 -mthumb-interwork:

Benchmark            Time(ns)    CPU(ns) Iterations
---------------------------------------------------
BM_UFlat/0             524806     529100        378 184.6MB/s  html            [+33.6%]
BM_UFlat/1            5139790    5200000        100 128.8MB/s  urls            [+28.8%]
BM_UFlat/2              86540      84166       1901 1.4GB/s  jpg               [ +0.6%]
BM_UFlat/3             215351     210176        904 428.0MB/s  pdf             [+29.8%]
BM_UFlat/4            2144490    2100000        100 186.0MB/s  html4           [+33.3%]
BM_UFlat/5             194482     190000       1000 123.5MB/s  cp              [+36.2%]
BM_UFlat/6              91843      90175       2107 117.9MB/s  c               [+38.6%]
BM_UFlat/7              28535      28426       6684 124.8MB/s  lsp             [+34.7%]
BM_UFlat/8            9206600    9200000        100 106.7MB/s  xls             [+42.4%]
BM_UFlat/9            1865273    1886792        106 76.9MB/s  txt1             [+32.5%]
BM_UFlat/10           1576809    1587301        126 75.2MB/s  txt2             [+32.3%]
BM_UFlat/11           4968450    4900000        100 83.1MB/s  txt3             [+32.7%]
BM_UFlat/12           6673970    6700000        100 68.6MB/s  txt4             [+32.8%]
BM_UFlat/13           2391470    2400000        100 203.9MB/s  bin             [+29.2%]
BM_UFlat/14            334601     344827        522 105.8MB/s  sum             [+30.6%]
BM_UFlat/15             37404      38080       5252 105.9MB/s  man             [+33.8%]
BM_UFlat/16            535470     540540        370 209.2MB/s  pb              [+31.2%]
BM_UFlat/17           1875245    1886792        106 93.2MB/s  gaviota          [+37.8%]
BM_UValidate/0         178425     179533       1114 543.9MB/s  html            [ +2.7%]
BM_UValidate/1        2100450    2000000        100 334.8MB/s  urls            [ +5.0%]
BM_UValidate/2           1039       1044     172413 113.3GB/s  jpg             [ +3.4%]
BM_UValidate/3          59423      59470       3363 1.5GB/s  pdf               [ +7.8%]
BM_UValidate/4         760716     766283        261 509.8MB/s  html4           [ +6.5%]
BM_ZFlat/0            1204632    1204819        166 81.1MB/s  html (23.57 %)   [+32.8%]
BM_ZFlat/1           15656190   15600000        100 42.9MB/s  urls (50.89 %)   [+27.6%]
BM_ZFlat/2             403336     410677        487 294.8MB/s  jpg (99.88 %)   [+16.5%]
BM_ZFlat/3             664073     671140        298 134.0MB/s  pdf (82.13 %)   [+28.4%]
BM_ZFlat/4            4961940    4900000        100 79.7MB/s  html4 (23.55 %)  [+30.6%]
BM_ZFlat/5             500664     501253        399 46.8MB/s  cp (48.12 %)     [+33.4%]
BM_ZFlat/6             217276     215982        926 49.2MB/s  c (42.40 %)      [+25.0%]
BM_ZFlat/7              64122      65487       3054 54.2MB/s  lsp (48.37 %)    [+36.1%]
BM_ZFlat/8           18045730   18000000        100 54.6MB/s  xls (41.34 %)    [+34.4%]
BM_ZFlat/9            4051530    4000000        100 36.3MB/s  txt1 (59.81 %)   [+25.0%]
BM_ZFlat/10           3451800    3500000        100 34.1MB/s  txt2 (64.07 %)   [+25.7%]
BM_ZFlat/11          11052340   11100000        100 36.7MB/s  txt3 (57.11 %)   [+24.3%]
BM_ZFlat/12          14538690   14600000        100 31.5MB/s  txt4 (68.35 %)   [+24.7%]
BM_ZFlat/13           5041850    5000000        100 97.9MB/s  bin (18.21 %)    [+32.0%]
BM_ZFlat/14            908840     909090        220 40.1MB/s  sum (51.88 %)    [+22.2%]
BM_ZFlat/15             86921      86206       1972 46.8MB/s  man (59.36 %)    [+42.2%]
BM_ZFlat/16           1312315    1315789        152 86.0MB/s  pb (23.15 %)     [+34.5%]
BM_ZFlat/17           3173120    3200000        100 54.9MB/s  gaviota (38.27%) [+28.1%]


The move from 64-bit to 32-bit operations for the copies also affected 32-bit x86;
positive on the decompression side, and slightly negative on the compression side
(unless that is noise; I only ran once):

Benchmark              Time(ns)    CPU(ns) Iterations
-----------------------------------------------------
BM_UFlat/0                86279      86140       7778 1.1GB/s  html             [ +7.5%]
BM_UFlat/1               839265     822622        778 813.9MB/s  urls           [ +9.4%]
BM_UFlat/2                 9180       9143      87500 12.9GB/s  jpg             [ +1.2%]
BM_UFlat/3                35080      35000      20000 2.5GB/s  pdf              [+10.1%]
BM_UFlat/4               350318     345000       2000 1.1GB/s  html4            [ +7.0%]
BM_UFlat/5                33808      33472      21212 701.0MB/s  cp             [ +9.0%]
BM_UFlat/6                15201      15214      46667 698.9MB/s  c              [+14.9%]
BM_UFlat/7                 4652       4651     159091 762.9MB/s  lsp            [ +7.5%]
BM_UFlat/8              1285551    1282528        538 765.7MB/s  xls            [+10.7%]
BM_UFlat/9               282510     281690       2414 514.9MB/s  txt1           [+13.6%]
BM_UFlat/10              243494     239286       2800 498.9MB/s  txt2           [+14.4%]
BM_UFlat/11              743625     740000       1000 550.0MB/s  txt3           [+14.3%]
BM_UFlat/12              999441     989717        778 464.3MB/s  txt4           [+16.1%]
BM_UFlat/13              412402     410076       1707 1.2GB/s  bin              [ +7.3%]
BM_UFlat/14               54876      54000      10000 675.3MB/s  sum            [+13.0%]
BM_UFlat/15                6146       6100     100000 660.8MB/s  man            [+14.8%]
BM_UFlat/16               90496      90286       8750 1.2GB/s  pb               [ +4.0%]
BM_UFlat/17              292650     292000       2500 602.0MB/s  gaviota        [+18.1%]
BM_UValidate/0            49620      49699      14286 1.9GB/s  html             [ +0.0%]
BM_UValidate/1           501371     500000       1000 1.3GB/s  urls             [ +0.0%]
BM_UValidate/2              232        227    3043478 521.5GB/s  jpg            [ +1.3%]
BM_UValidate/3            17250      17143      43750 5.1GB/s  pdf              [ -1.3%]
BM_UValidate/4           198643     200000       3500 1.9GB/s  html4            [ -0.9%]
BM_ZFlat/0               227128     229415       3182 425.7MB/s  html (23.57 %) [ -1.4%]
BM_ZFlat/1              2970089    2960000        250 226.2MB/s  urls (50.89 %) [ -1.9%]
BM_ZFlat/2                45683      44999      15556 2.6GB/s  jpg (99.88 %)    [ +2.2%]
BM_ZFlat/3               114661     113136       6364 795.1MB/s  pdf (82.13 %)  [ -1.5%]
BM_ZFlat/4               919702     914286        875 427.2MB/s  html4 (23.55%) [ -1.3%]
BM_ZFlat/5               108189     108422       6364 216.4MB/s  cp (48.12 %)   [ -1.2%]
BM_ZFlat/6                44525      44000      15909 241.7MB/s  c (42.40 %)    [ -2.9%]
BM_ZFlat/7                15973      15857      46667 223.8MB/s  lsp (48.37 %)  [ +0.0%]
BM_ZFlat/8              2677888    2639405        269 372.1MB/s  xls (41.34 %)  [ -1.4%]
BM_ZFlat/9               800715     780000       1000 186.0MB/s  txt1 (59.81 %) [ -0.4%]
BM_ZFlat/10              700089     700000       1000 170.5MB/s  txt2 (64.07 %) [ -2.9%]
BM_ZFlat/11             2159356    2138365        318 190.3MB/s  txt3 (57.11 %) [ -0.3%]
BM_ZFlat/12             2796143    2779923        259 165.3MB/s  txt4 (68.35 %) [ -1.4%]
BM_ZFlat/13              856458     835476        778 585.8MB/s  bin (18.21 %)  [ -0.1%]
BM_ZFlat/14              166908     166857       4375 218.6MB/s  sum (51.88 %)  [ -1.4%]
BM_ZFlat/15               21181      20857      35000 193.3MB/s  man (59.36 %)  [ -0.8%]
BM_ZFlat/16              244009     239973       2917 471.3MB/s  pb (23.15 %)   [ -1.4%]
BM_ZFlat/17              596362     590000       1000 297.9MB/s  gaviota (38.27%) [ +0.0%]

R=sanjay

------------------------------------------------------------------------
r58 | snappy.mirrorbot@gmail.com | 2012-02-11 23:11:22 +0100 (Sat, 11 Feb 2012) | 9 lines

Lower the size allocated in the "corrupted input" unit test from 256 MB
to 2 MB. This fixes issues with running the unit test on platforms with
little RAM (e.g. some ARM boards).

Also, reactivate the 2 MB test for 64-bit platforms; there's no good
reason why it shouldn't be.

R=sanjay

------------------------------------------------------------------------
r57 | snappy.mirrorbot@gmail.com | 2012-01-08 18:55:48 +0100 (Sun, 08 Jan 2012) | 2 lines

Minor refactoring to accomodate changes in Google's internal code tree.

------------------------------------------------------------------------
r56 | snappy.mirrorbot@gmail.com | 2012-01-04 14:10:46 +0100 (Wed, 04 Jan 2012) | 19 lines

Fix public issue r57: Fix most warnings with -Wall, mostly signed/unsigned
warnings. There are still some in the unit test, but the main .cc file should
be clean. We haven't enabled -Wall for the default build, since the unit test
is still not clean.

This also fixes a real bug in the open-source implementation of
ReadFileToStringOrDie(); it would not detect errors correctly.

I had to go through some pains to avoid performance loss as the types
were changed; I think there might still be some with 32-bit if and only if LFS
is enabled (ie., size_t is 64-bit), but for regular 32-bit and 64-bit I can't
see any losses, and I've diffed the generated GCC assembler between the old and
new code without seeing any significant choices. If anything, it's ever so
slightly faster.

This may or may not enable compression of very large blocks (>2^32 bytes)
when size_t is 64-bit, but I haven't checked, and it is still not a supported
case.

------------------------------------------------------------------------
r55 | snappy.mirrorbot@gmail.com | 2012-01-04 11:46:39 +0100 (Wed, 04 Jan 2012) | 6 lines

Add a framing format description. We do not have any implementation of this at
the current point, but there seems to be enough of a general interest in the
topic (cf. public bug #34).

R=csilvers,sanjay

------------------------------------------------------------------------
r54 | snappy.mirrorbot@gmail.com | 2011-12-05 22:27:26 +0100 (Mon, 05 Dec 2011) | 81 lines

Speed up decompression by moving the refill check to the end of the loop.

This seems to work because in most of the branches, the compiler can evaluate
“ip_limit_ - ip” in a more efficient way than reloading ip_limit_ from memory
(either by already having the entire expression in a register, or reconstructing
it from “avail”, or something else). Memory loads, even from L1, are seemingly
costly in the big picture at the current decompression speeds.

Microbenchmarks (64-bit, opt mode):

Westmere (Intel Core i7):

  Benchmark     Time(ns)    CPU(ns) Iterations
  --------------------------------------------
  BM_UFlat/0       74492      74491     187894 1.3GB/s  html      [ +5.9%]
  BM_UFlat/1      712268     712263      19644 940.0MB/s  urls    [ +3.8%]
  BM_UFlat/2       10591      10590    1000000 11.2GB/s  jpg      [ -6.8%]
  BM_UFlat/3       29643      29643     469915 3.0GB/s  pdf       [ +7.9%]
  BM_UFlat/4      304669     304667      45930 1.3GB/s  html4     [ +4.8%]
  BM_UFlat/5       28508      28507     490077 823.1MB/s  cp      [ +4.0%]
  BM_UFlat/6       12415      12415    1000000 856.5MB/s  c       [ +8.6%]
  BM_UFlat/7        3415       3415    4084723 1039.0MB/s  lsp    [+18.0%]
  BM_UFlat/8      979569     979563      14261 1002.5MB/s  xls    [ +5.8%]
  BM_UFlat/9      230150     230148      60934 630.2MB/s  txt1    [ +5.2%]
  BM_UFlat/10     197167     197166      71135 605.5MB/s  txt2    [ +4.7%]
  BM_UFlat/11     607394     607390      23041 670.1MB/s  txt3    [ +5.6%]
  BM_UFlat/12     808502     808496      17316 568.4MB/s  txt4    [ +5.0%]
  BM_UFlat/13     372791     372788      37564 1.3GB/s  bin       [ +3.3%]
  BM_UFlat/14      44541      44541     313969 818.8MB/s  sum     [ +5.7%]
  BM_UFlat/15       4833       4833    2898697 834.1MB/s  man     [ +4.8%]
  BM_UFlat/16      79855      79855     175356 1.4GB/s  pb        [ +4.8%]
  BM_UFlat/17     245845     245843      56838 715.0MB/s  gaviota [ +5.8%]

Clovertown (Intel Core 2):

  Benchmark     Time(ns)    CPU(ns) Iterations
  --------------------------------------------
  BM_UFlat/0      107911     107890     100000 905.1MB/s  html    [ +2.2%]
  BM_UFlat/1     1011237    1011041      10000 662.3MB/s  urls    [ +2.5%]
  BM_UFlat/2       26775      26770     523089 4.4GB/s  jpg       [ +0.0%]
  BM_UFlat/3       48103      48095     290618 1.8GB/s  pdf       [ +3.4%]
  BM_UFlat/4      437724     437644      31937 892.6MB/s  html4   [ +2.1%]
  BM_UFlat/5       39607      39600     358284 592.5MB/s  cp      [ +2.4%]
  BM_UFlat/6       18227      18224     768191 583.5MB/s  c       [ +2.7%]
  BM_UFlat/7        5171       5170    2709437 686.4MB/s  lsp     [ +3.9%]
  BM_UFlat/8     1560291    1559989       8970 629.5MB/s  xls     [ +3.6%]
  BM_UFlat/9      335401     335343      41731 432.5MB/s  txt1    [ +3.0%]
  BM_UFlat/10     287014     286963      48758 416.0MB/s  txt2    [ +2.8%]
  BM_UFlat/11     888522     888356      15752 458.1MB/s  txt3    [ +2.9%]
  BM_UFlat/12    1186600    1186378      10000 387.3MB/s  txt4    [ +3.1%]
  BM_UFlat/13     572295     572188      24468 855.4MB/s  bin     [ +2.1%]
  BM_UFlat/14      64060      64049     218401 569.4MB/s  sum     [ +4.1%]
  BM_UFlat/15       7264       7263    1916168 555.0MB/s  man     [ +1.4%]
  BM_UFlat/16     108853     108836     100000 1039.1MB/s  pb     [ +1.7%]
  BM_UFlat/17     364289     364223      38419 482.6MB/s  gaviota [ +4.9%]

Barcelona (AMD Opteron):

  Benchmark     Time(ns)    CPU(ns) Iterations
  --------------------------------------------
  BM_UFlat/0      103900     103871     100000 940.2MB/s  html    [ +8.3%]
  BM_UFlat/1     1000435    1000107      10000 669.5MB/s  urls    [ +6.6%]
  BM_UFlat/2       24659      24652     567362 4.8GB/s  jpg       [ +0.1%]
  BM_UFlat/3       48206      48193     291121 1.8GB/s  pdf       [ +5.0%]
  BM_UFlat/4      421980     421850      33174 926.0MB/s  html4   [ +7.3%]
  BM_UFlat/5       40368      40357     346994 581.4MB/s  cp      [ +8.7%]
  BM_UFlat/6       19836      19830     708695 536.2MB/s  c       [ +8.0%]
  BM_UFlat/7        6100       6098    2292774 581.9MB/s  lsp     [ +9.0%]
  BM_UFlat/8     1693093    1692514       8261 580.2MB/s  xls     [ +8.0%]
  BM_UFlat/9      365991     365886      38225 396.4MB/s  txt1    [ +7.1%]
  BM_UFlat/10     311330     311238      44950 383.6MB/s  txt2    [ +7.6%]
  BM_UFlat/11     975037     974737      14376 417.5MB/s  txt3    [ +6.9%]
  BM_UFlat/12    1303558    1303175      10000 352.6MB/s  txt4    [ +7.3%]
  BM_UFlat/13     517448     517290      27144 946.2MB/s  bin     [ +5.5%]
  BM_UFlat/14      66537      66518     210352 548.3MB/s  sum     [ +7.5%]
  BM_UFlat/15       7976       7974    1760383 505.6MB/s  man     [ +5.6%]
  BM_UFlat/16     103121     103092     100000 1097.0MB/s  pb     [ +8.7%]
  BM_UFlat/17     391431     391314      35733 449.2MB/s  gaviota [ +6.5%]

R=sanjay

------------------------------------------------------------------------
r53 | snappy.mirrorbot@gmail.com | 2011-11-23 12:14:17 +0100 (Wed, 23 Nov 2011) | 88 lines

Speed up decompression by making the fast path for literals faster.

We do the fast-path step as soon as possible; in fact, as soon as we know the
literal length. Since we usually hit the fast path, we can then skip the checks
for long literals and available input space (beyond what the fast path check
already does).

Note that this changes the decompression Writer API; however, it does not
change the ABI, since writers are always templatized and as such never
cross compilation units. The new API is slightly more general, in that it
doesn't hard-code the value 16. Note that we also take care to check
for len <= 16 first, since the other two checks almost always succeed
(so we don't want to waste time checking for them until we have to).

The improvements are most marked on Nehalem, but are generally positive
on other platforms as well. All microbenchmarks are 64-bit, opt.

Clovertown (Core 2):

  Benchmark     Time(ns)    CPU(ns) Iterations
  --------------------------------------------
  BM_UFlat/0      110226     110224     100000 886.0MB/s  html    [ +1.5%]
  BM_UFlat/1     1036523    1036508      10000 646.0MB/s  urls    [ -0.8%]
  BM_UFlat/2       26775      26775     522570 4.4GB/s  jpg       [ +0.0%]
  BM_UFlat/3       49738      49737     280974 1.8GB/s  pdf       [ +0.3%]
  BM_UFlat/4      446790     446792      31334 874.3MB/s  html4   [ +0.8%]
  BM_UFlat/5       40561      40562     350424 578.5MB/s  cp      [ +1.3%]
  BM_UFlat/6       18722      18722     746903 568.0MB/s  c       [ +1.4%]
  BM_UFlat/7        5373       5373    2608632 660.5MB/s  lsp     [ +8.3%]
  BM_UFlat/8     1615716    1615718       8670 607.8MB/s  xls     [ +2.0%]
  BM_UFlat/9      345278     345281      40481 420.1MB/s  txt1    [ +1.4%]
  BM_UFlat/10     294855     294855      47452 404.9MB/s  txt2    [ +1.6%]
  BM_UFlat/11     914263     914263      15316 445.2MB/s  txt3    [ +1.1%]
  BM_UFlat/12    1222694    1222691      10000 375.8MB/s  txt4    [ +1.4%]
  BM_UFlat/13     584495     584489      23954 837.4MB/s  bin     [ -0.6%]
  BM_UFlat/14      66662      66662     210123 547.1MB/s  sum     [ +1.2%]
  BM_UFlat/15       7368       7368    1881856 547.1MB/s  man     [ +4.0%]
  BM_UFlat/16     110727     110726     100000 1021.4MB/s  pb     [ +2.3%]
  BM_UFlat/17     382138     382141      36616 460.0MB/s  gaviota [ -0.7%]

Westmere (Core i7):

  Benchmark     Time(ns)    CPU(ns) Iterations
  --------------------------------------------
  BM_UFlat/0       78861      78853     177703 1.2GB/s  html      [ +2.1%]
  BM_UFlat/1      739560     739491      18912 905.4MB/s  urls    [ +3.4%]
  BM_UFlat/2        9867       9866    1419014 12.0GB/s  jpg      [ +3.4%]
  BM_UFlat/3       31989      31986     438385 2.7GB/s  pdf       [ +0.2%]
  BM_UFlat/4      319406     319380      43771 1.2GB/s  html4     [ +1.9%]
  BM_UFlat/5       29639      29636     472862 791.7MB/s  cp      [ +5.2%]
  BM_UFlat/6       13478      13477    1000000 789.0MB/s  c       [ +2.3%]
  BM_UFlat/7        4030       4029    3475364 880.7MB/s  lsp     [ +8.7%]
  BM_UFlat/8     1036585    1036492      10000 947.5MB/s  xls     [ +6.9%]
  BM_UFlat/9      242127     242105      57838 599.1MB/s  txt1    [ +3.0%]
  BM_UFlat/10     206499     206480      67595 578.2MB/s  txt2    [ +3.4%]
  BM_UFlat/11     641635     641570      21811 634.4MB/s  txt3    [ +2.4%]
  BM_UFlat/12     848847     848769      16443 541.4MB/s  txt4    [ +3.1%]
  BM_UFlat/13     384968     384938      36366 1.2GB/s  bin       [ +0.3%]
  BM_UFlat/14      47106      47101     297770 774.3MB/s  sum     [ +4.4%]
  BM_UFlat/15       5063       5063    2772202 796.2MB/s  man     [ +7.7%]
  BM_UFlat/16      83663      83656     167697 1.3GB/s  pb        [ +1.8%]
  BM_UFlat/17     260224     260198      53823 675.6MB/s  gaviota [ -0.5%]

Barcelona (Opteron):

  Benchmark     Time(ns)    CPU(ns) Iterations
  --------------------------------------------
  BM_UFlat/0      112490     112457     100000 868.4MB/s  html    [ -0.4%]
  BM_UFlat/1     1066719    1066339      10000 627.9MB/s  urls    [ +1.0%]
  BM_UFlat/2       24679      24672     563802 4.8GB/s  jpg       [ +0.7%]
  BM_UFlat/3       50603      50589     277285 1.7GB/s  pdf       [ +2.6%]
  BM_UFlat/4      452982     452849      30900 862.6MB/s  html4   [ -0.2%]
  BM_UFlat/5       43860      43848     319554 535.1MB/s  cp      [ +1.2%]
  BM_UFlat/6       21419      21413     653573 496.6MB/s  c       [ +1.0%]
  BM_UFlat/7        6646       6645    2105405 534.1MB/s  lsp     [ +0.3%]
  BM_UFlat/8     1828487    1827886       7658 537.3MB/s  xls     [ +2.6%]
  BM_UFlat/9      391824     391714      35708 370.3MB/s  txt1    [ +2.2%]
  BM_UFlat/10     334913     334816      41885 356.6MB/s  txt2    [ +1.7%]
  BM_UFlat/11    1042062    1041674      10000 390.7MB/s  txt3    [ +1.1%]
  BM_UFlat/12    1398902    1398456      10000 328.6MB/s  txt4    [ +1.7%]
  BM_UFlat/13     545706     545530      25669 897.2MB/s  bin     [ -0.4%]
  BM_UFlat/14      71512      71505     196035 510.0MB/s  sum     [ +1.4%]
  BM_UFlat/15       8422       8421    1665036 478.7MB/s  man     [ +2.6%]
  BM_UFlat/16     112053     112048     100000 1009.3MB/s  pb     [ -0.4%]
  BM_UFlat/17     416723     416713      33612 421.8MB/s  gaviota [ -2.0%]

R=sanjay

------------------------------------------------------------------------
r52 | snappy.mirrorbot@gmail.com | 2011-11-08 15:46:39 +0100 (Tue, 08 Nov 2011) | 5 lines

Fix public issue #53: Update the README to the API we actually open-sourced
with.

R=sanjay

------------------------------------------------------------------------
r51 | snappy.mirrorbot@gmail.com | 2011-10-05 14:27:12 +0200 (Wed, 05 Oct 2011) | 5 lines

In the format description, use a clearer example to emphasize that varints are
stored in little-endian. Patch from Christian von Roques.

R=csilvers

------------------------------------------------------------------------
r50 | snappy.mirrorbot@gmail.com | 2011-09-15 21:34:06 +0200 (Thu, 15 Sep 2011) | 4 lines

Release Snappy 1.0.4.

R=sanjay

------------------------------------------------------------------------
r49 | snappy.mirrorbot@gmail.com | 2011-09-15 11:50:05 +0200 (Thu, 15 Sep 2011) | 5 lines

Fix public issue #50: Include generic byteswap macros.
Also include Solaris 10 and FreeBSD versions.

R=csilvers

------------------------------------------------------------------------
r48 | snappy.mirrorbot@gmail.com | 2011-08-10 20:57:27 +0200 (Wed, 10 Aug 2011) | 5 lines

Partially fix public issue 50: Remove an extra comma from the end of some
enum declarations, as it seems the Sun compiler does not like it.

Based on patch by Travis Vitek.

------------------------------------------------------------------------
r47 | snappy.mirrorbot@gmail.com | 2011-08-10 20:44:16 +0200 (Wed, 10 Aug 2011) | 4 lines

Use the right #ifdef test for sys/mman.h.

Based on patch by Travis Vitek.

------------------------------------------------------------------------
r46 | snappy.mirrorbot@gmail.com | 2011-08-10 03:22:09 +0200 (Wed, 10 Aug 2011) | 6 lines

Fix public issue #47: Small comment cleanups in the unit test.

Originally based on a patch by Patrick Pelletier.

R=sanjay

------------------------------------------------------------------------
r45 | snappy.mirrorbot@gmail.com | 2011-08-10 03:14:43 +0200 (Wed, 10 Aug 2011) | 8 lines

Fix public issue #46: Format description said "3-byte offset"
instead of "4-byte offset" for the longest copies.

Also fix an inconsistency in the heading for section 2.2.3.
Both patches by Patrick Pelletier.

R=csilvers

------------------------------------------------------------------------
r44 | snappy.mirrorbot@gmail.com | 2011-06-28 13:40:25 +0200 (Tue, 28 Jun 2011) | 8 lines

Fix public issue #44: Make the definition and declaration of CompressFragment
identical, even regarding cv-qualifiers.

This is required to work around a bug in the Solaris Studio C++ compiler
(it does not properly disregard cv-qualifiers when doing name mangling).

R=sanjay

------------------------------------------------------------------------
r43 | snappy.mirrorbot@gmail.com | 2011-06-04 12:19:05 +0200 (Sat, 04 Jun 2011) | 7 lines

Correct an inaccuracy in the Snappy format description.
(I stumbled into this when changing the way we decompress literals.)

R=csilvers

Revision created by MOE tool push_codebase.

------------------------------------------------------------------------
r42 | snappy.mirrorbot@gmail.com | 2011-06-03 22:53:06 +0200 (Fri, 03 Jun 2011) | 50 lines

Speed up decompression by removing a fast-path attempt.

Whenever we try to enter a copy fast-path, there is a certain cost in checking
that all the preconditions are in place, but it's normally offset by the fact
that we can usually take the cheaper path. However, in a certain path we've
already established that "avail < literal_length", which usually means that
either the available space is small, or the literal is big. Both will disqualify
us from taking the fast path, and thus we take the hit from the precondition
checking without gaining much from having a fast path. Thus, simply don't try
the fast path in this situation -- we're already on a slow path anyway
(one where we need to refill more data from the reader).

I'm a bit surprised at how much this gained; it could be that this path is
more common than I thought, or that the simpler structure somehow makes the
compiler happier. I haven't looked at the assembler, but it's a win across
the board on both Core 2, Core i7 and Opteron, at least for the cases we
typically care about. The gains seem to be the largest on Core i7, though.
Results from my Core i7 workstation:


  Benchmark            Time(ns)    CPU(ns) Iterations
  ---------------------------------------------------
  BM_UFlat/0              73337      73091     190996 1.3GB/s  html      [ +1.7%]
  BM_UFlat/1             696379     693501      20173 965.5MB/s  urls    [ +2.7%]
  BM_UFlat/2               9765       9734    1472135 12.1GB/s  jpg      [ +0.7%]
  BM_UFlat/3              29720      29621     472973 3.0GB/s  pdf       [ +1.8%]
  BM_UFlat/4             294636     293834      47782 1.3GB/s  html4     [ +2.3%]
  BM_UFlat/5              28399      28320     494700 828.5MB/s  cp      [ +3.5%]
  BM_UFlat/6              12795      12760    1000000 833.3MB/s  c       [ +1.2%]
  BM_UFlat/7               3984       3973    3526448 893.2MB/s  lsp     [ +5.7%]
  BM_UFlat/8             991996     989322      14141 992.6MB/s  xls     [ +3.3%]
  BM_UFlat/9             228620     227835      61404 636.6MB/s  txt1    [ +4.0%]
  BM_UFlat/10            197114     196494      72165 607.5MB/s  txt2    [ +3.5%]
  BM_UFlat/11            605240     603437      23217 674.4MB/s  txt3    [ +3.7%]
  BM_UFlat/12            804157     802016      17456 573.0MB/s  txt4    [ +3.9%]
  BM_UFlat/13            347860     346998      40346 1.4GB/s  bin       [ +1.2%]
  BM_UFlat/14             44684      44559     315315 818.4MB/s  sum     [ +2.3%]
  BM_UFlat/15              5120       5106    2739726 789.4MB/s  man     [ +3.3%]
  BM_UFlat/16             76591      76355     183486 1.4GB/s  pb        [ +2.8%]
  BM_UFlat/17            238564     237828      58824 739.1MB/s  gaviota [ +1.6%]
  BM_UValidate/0          42194      42060     333333 2.3GB/s  html      [ -0.1%]
  BM_UValidate/1         433182     432005      32407 1.5GB/s  urls      [ -0.1%]
  BM_UValidate/2            197        196   71428571 603.3GB/s  jpg     [ +0.5%]
  BM_UValidate/3          14494      14462     972222 6.1GB/s  pdf       [ +0.5%]
  BM_UValidate/4         168444     167836      83832 2.3GB/s  html4     [ +0.1%]

R=jeff

Revision created by MOE tool push_codebase.

------------------------------------------------------------------------
r41 | snappy.mirrorbot@gmail.com | 2011-06-03 22:47:14 +0200 (Fri, 03 Jun 2011) | 43 lines

Speed up decompression by not needing a lookup table for literal items.

Looking up into and decoding the values from char_table has long shown up as a
hotspot in the decompressor. While it turns out that it's hard to make a more
efficient decoder for the copy ops, the literals are simple enough that we can
decode them without needing a table lookup. (This means that 1/4 of the table
is now unused, although that in itself doesn't buy us anything.)

The gains are small, but definitely present; some tests win as much as 10%,
but 1-4% is more typical. These results are from Core i7, in 64-bit mode;
Core 2 and Opteron show similar results. (I've run with more iterations
than unusual to make sure the smaller gains don't drown entirely in noise.)

  Benchmark            Time(ns)    CPU(ns) Iterations
  ---------------------------------------------------
  BM_UFlat/0              74665      74428     182055 1.3GB/s  html      [ +3.1%]
  BM_UFlat/1             714106     711997      19663 940.4MB/s  urls    [ +4.4%]
  BM_UFlat/2               9820       9789    1427115 12.1GB/s  jpg      [ -1.2%]
  BM_UFlat/3              30461      30380     465116 2.9GB/s  pdf       [ +0.8%]
  BM_UFlat/4             301445     300568      46512 1.3GB/s  html4     [ +2.2%]
  BM_UFlat/5              29338      29263     479452 801.8MB/s  cp      [ +1.6%]
  BM_UFlat/6              13004      12970    1000000 819.9MB/s  c       [ +2.1%]
  BM_UFlat/7               4180       4168    3349282 851.4MB/s  lsp     [ +1.3%]
  BM_UFlat/8            1026149    1024000      10000 959.0MB/s  xls     [+10.7%]
  BM_UFlat/9             237441     236830      59072 612.4MB/s  txt1    [ +0.3%]
  BM_UFlat/10            203966     203298      69307 587.2MB/s  txt2    [ +0.8%]
  BM_UFlat/11            627230     625000      22400 651.2MB/s  txt3    [ +0.7%]
  BM_UFlat/12            836188     833979      16787 551.0MB/s  txt4    [ +1.3%]
  BM_UFlat/13            351904     350750      39886 1.4GB/s  bin       [ +3.8%]
  BM_UFlat/14             45685      45562     308370 800.4MB/s  sum     [ +5.9%]
  BM_UFlat/15              5286       5270    2656546 764.9MB/s  man     [ +1.5%]
  BM_UFlat/16             78774      78544     178117 1.4GB/s  pb        [ +4.3%]
  BM_UFlat/17            242270     241345      58091 728.3MB/s  gaviota [ +1.2%]
  BM_UValidate/0          42149      42000     333333 2.3GB/s  html      [ -3.0%]
  BM_UValidate/1         432741     431303      32483 1.5GB/s  urls      [ +7.8%]
  BM_UValidate/2            198        197   71428571 600.7GB/s  jpg     [+16.8%]
  BM_UValidate/3          14560      14521     965517 6.1GB/s  pdf       [ -4.1%]
  BM_UValidate/4         169065     168671      83832 2.3GB/s  html4     [ -2.9%]

R=jeff

Revision created by MOE tool push_codebase.

------------------------------------------------------------------------
r40 | snappy.mirrorbot@gmail.com | 2011-06-03 00:57:41 +0200 (Fri, 03 Jun 2011) | 2 lines

Release Snappy 1.0.3.

------------------------------------------------------------------------
r39 | snappy.mirrorbot@gmail.com | 2011-06-02 20:06:54 +0200 (Thu, 02 Jun 2011) | 11 lines

Remove an unneeded goto in the decompressor; it turns out that the
state of ip_ after decompression (or attempted decompresion) is
completely irrelevant, so we don't need the trailer.

Performance is, as expected, mostly flat -- there's a curious ~3-5%
loss in the "lsp" test, but that test case is so short it is hard to say
anything definitive about why (most likely, it's some sort of
unrelated effect).

R=jeff

------------------------------------------------------------------------
r38 | snappy.mirrorbot@gmail.com | 2011-06-02 19:59:40 +0200 (Thu, 02 Jun 2011) | 52 lines

Speed up decompression by caching ip_.

It is seemingly hard for the compiler to understand that ip_, the current input
pointer into the compressed data stream, can not alias on anything else, and
thus using it directly will incur memory traffic as it cannot be kept in a
register. The code already knew about this and cached it into a local
variable, but since Step() only decoded one tag, it had to move ip_ back into
place between every tag. This seems to have cost us a significant amount of
performance, so changing Step() into a function that decodes as much as it can
before it saves ip_ back and returns. (Note that Step() was already inlined,
so it is not the manual inlining that buys the performance here.)

The wins are about 3-6% for Core 2, 6-13% on Core i7 and 5-12% on Opteron
(for plain array-to-array decompression, in 64-bit opt mode).

There is a tiny difference in the behavior here; if an invalid literal is
encountered (ie., the writer refuses the Append() operation), ip_ will now
point to the byte past the tag byte, instead of where the literal was
originally thought to end. However, we don't use ip_ for anything after
DecompressAllTags() has returned, so this should not change external behavior
in any way.

Microbenchmark results for Core i7, 64-bit (Opteron results are similar):

Benchmark            Time(ns)    CPU(ns) Iterations
---------------------------------------------------
BM_UFlat/0              79134      79110       8835 1.2GB/s  html      [ +6.2%]
BM_UFlat/1             786126     786096        891 851.8MB/s  urls    [+10.0%]
BM_UFlat/2               9948       9948      69125 11.9GB/s  jpg      [ -1.3%]
BM_UFlat/3              31999      31998      21898 2.7GB/s  pdf       [ +6.5%]
BM_UFlat/4             318909     318829       2204 1.2GB/s  html4     [ +6.5%]
BM_UFlat/5              31384      31390      22363 747.5MB/s  cp      [ +9.2%]
BM_UFlat/6              14037      14034      49858 757.7MB/s  c       [+10.6%]
BM_UFlat/7               4612       4612     151395 769.5MB/s  lsp     [ +9.5%]
BM_UFlat/8            1203174    1203007        582 816.3MB/s  xls     [+19.3%]
BM_UFlat/9             253869     253955       2757 571.1MB/s  txt1    [+11.4%]
BM_UFlat/10            219292     219290       3194 544.4MB/s  txt2    [+12.1%]
BM_UFlat/11            672135     672131       1000 605.5MB/s  txt3    [+11.2%]
BM_UFlat/12            902512     902492        776 509.2MB/s  txt4    [+12.5%]
BM_UFlat/13            372110     371998       1881 1.3GB/s  bin       [ +5.8%]
BM_UFlat/14             50407      50407      10000 723.5MB/s  sum     [+13.5%]
BM_UFlat/15              5699       5701     100000 707.2MB/s  man     [+12.4%]
BM_UFlat/16             83448      83424       8383 1.3GB/s  pb        [ +5.7%]
BM_UFlat/17            256958     256963       2723 684.1MB/s  gaviota [ +7.9%]
BM_UValidate/0          42795      42796      16351 2.2GB/s  html      [+25.8%]
BM_UValidate/1         490672     490622       1427 1.3GB/s  urls      [+22.7%]
BM_UValidate/2            237        237    2950297 499.0GB/s  jpg     [+24.9%]
BM_UValidate/3          14610      14611      47901 6.0GB/s  pdf       [+26.8%]
BM_UValidate/4         171973     171990       4071 2.2GB/s  html4     [+25.7%]



------------------------------------------------------------------------
r37 | snappy.mirrorbot@gmail.com | 2011-05-17 10:48:25 +0200 (Tue, 17 May 2011) | 10 lines


Fix the numbering of the headlines in the Snappy format description.

R=csilvers
DELTA=4  (0 added, 0 deleted, 4 changed)


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1906

------------------------------------------------------------------------
r36 | snappy.mirrorbot@gmail.com | 2011-05-16 10:59:18 +0200 (Mon, 16 May 2011) | 12 lines


Fix public issue #32: Add compressed format documentation for Snappy.
This text is new, but an earlier version from Zeev Tarantov was used
as reference.

R=csilvers
DELTA=112  (111 added, 0 deleted, 1 changed)


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1867

------------------------------------------------------------------------
r35 | snappy.mirrorbot@gmail.com | 2011-05-09 23:29:02 +0200 (Mon, 09 May 2011) | 12 lines


Fix public issue #39: Pick out the median runs based on CPU time,
not real time. Also, use nth_element instead of sort, since we
only need one element.

R=csilvers
DELTA=5  (3 added, 0 deleted, 2 changed)


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1799

------------------------------------------------------------------------
r34 | snappy.mirrorbot@gmail.com | 2011-05-09 23:28:45 +0200 (Mon, 09 May 2011) | 19 lines


Fix public issue #38: Make the microbenchmark framework handle
properly cases where gettimeofday() can stand return the same
result twice (as sometimes on GNU/Hurd) or go backwards
(as when the user adjusts the clock). We avoid a division-by-zero,
and put a lower bound on the number of iterations -- the same
amount as we use to calibrate.

We should probably use CLOCK_MONOTONIC for platforms that support
it, to be robust against clock adjustments; we already use Windows'
monotonic timers. However, that's for a later changelist.

R=csilvers
DELTA=7  (5 added, 0 deleted, 2 changed)


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1798

------------------------------------------------------------------------
r33 | snappy.mirrorbot@gmail.com | 2011-05-04 01:22:52 +0200 (Wed, 04 May 2011) | 11 lines


Fix public issue #37: Only link snappy_unittest against -lz and other autodetected
libraries, not libsnappy.so (which doesn't need any such dependency).

R=csilvers
DELTA=20  (14 added, 0 deleted, 6 changed)


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1710

------------------------------------------------------------------------
r32 | snappy.mirrorbot@gmail.com | 2011-05-04 01:22:33 +0200 (Wed, 04 May 2011) | 11 lines


Release Snappy 1.0.2, to get the license change and various other fixes into
a release.

R=csilvers
DELTA=239  (236 added, 0 deleted, 3 changed)


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1709

------------------------------------------------------------------------
r31 | snappy.mirrorbot@gmail.com | 2011-04-26 14:34:55 +0200 (Tue, 26 Apr 2011) | 15 lines


Fix public issue #30: Stop using gettimeofday() altogether on Win32,
as MSVC doesn't include it. Replace with QueryPerformanceCounter(),
which is monotonic and probably reasonably high-resolution.
(Some machines have traditionally had bugs in QPC, but they should
be relatively rare these days, and there's really no much better
alternative that I know of.)

R=csilvers
DELTA=74  (55 added, 19 deleted, 0 changed)


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1556

------------------------------------------------------------------------
r30 | snappy.mirrorbot@gmail.com | 2011-04-26 14:34:37 +0200 (Tue, 26 Apr 2011) | 11 lines


Fix public issue #31: Don't reset PATH in autogen.sh; instead, do the trickery
we need for our own build system internally.

R=csilvers
DELTA=16  (13 added, 1 deleted, 2 changed)


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1555

------------------------------------------------------------------------
r29 | snappy.mirrorbot@gmail.com | 2011-04-16 00:55:56 +0200 (Sat, 16 Apr 2011) | 12 lines


When including <windows.h>, define WIN32_LEAN_AND_MEAN first,
so we won't pull in macro definitions of things like min() and max(),
which can conflict with <algorithm>.

R=csilvers
DELTA=1  (1 added, 0 deleted, 0 changed)


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1485

------------------------------------------------------------------------
r28 | snappy.mirrorbot@gmail.com | 2011-04-11 11:07:01 +0200 (Mon, 11 Apr 2011) | 15 lines


Fix public issue #29: Write CPU timing code for Windows, based on GetProcessTimes()
instead of getursage().

I thought I'd already committed this patch, so that the 1.0.1 release already
would have a Windows-compatible snappy_unittest, but I'd seemingly deleted it
instead, so this is a reconstruction.

R=csilvers
DELTA=43  (39 added, 3 deleted, 1 changed)


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1295

------------------------------------------------------------------------
r27 | snappy.mirrorbot@gmail.com | 2011-04-08 11:51:53 +0200 (Fri, 08 Apr 2011) | 22 lines


Include C bindings of Snappy, contributed by Martin Gieseking.

I've made a few changes since Martin's version; mostly style nits, but also
a semantic change -- most functions that return bool in the C++ version now
return an enum, to better match typical C (and zlib) semantics.

I've kept the copyright notice, since Martin is obviously the author here;
he has signed the contributor license agreement, though, so this should not
hinder Google's use in the future.

We'll need to update the libtool version number to match the added interface,
but as of http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
I'm going to wait until public release.

R=csilvers
DELTA=238  (233 added, 0 deleted, 5 changed)


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1294

------------------------------------------------------------------------
r26 | snappy.mirrorbot@gmail.com | 2011-04-07 18:36:43 +0200 (Thu, 07 Apr 2011) | 13 lines


Replace geo.protodata with a newer version.

The data compresses/decompresses slightly faster than the old data, and has
similar density.

R=lookingbill
DELTA=1  (0 added, 0 deleted, 1 changed)


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1288

------------------------------------------------------------------------
r25 | snappy.mirrorbot@gmail.com | 2011-03-30 22:27:53 +0200 (Wed, 30 Mar 2011) | 12 lines


Fix public issue #27: Add HAVE_CONFIG_H tests around the config.h
inclusion in snappy-stubs-internal.h, which eases compiling outside the
automake/autoconf framework.

R=csilvers
DELTA=5  (4 added, 1 deleted, 0 changed)


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1152

------------------------------------------------------------------------
r24 | snappy.mirrorbot@gmail.com | 2011-03-30 22:27:39 +0200 (Wed, 30 Mar 2011) | 13 lines


Fix public issue #26: Take memory allocation and reallocation entirely out of the
Measure() loop. This gives all algorithms a small speed boost, except Snappy which
already didn't do reallocation (so the measurements were slightly biased in its
favor).

R=csilvers
DELTA=92  (69 added, 9 deleted, 14 changed)


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1151

------------------------------------------------------------------------
r23 | snappy.mirrorbot@gmail.com | 2011-03-30 22:25:09 +0200 (Wed, 30 Mar 2011) | 18 lines


Renamed "namespace zippy" to "namespace snappy" to reduce
the differences from the opensource code.  Will make it easier
in the future to mix-and-match third-party code that uses
snappy with google code.

Currently, csearch shows that the only external user of
"namespace zippy" is some bigtable code that accesses
a TEST variable, which is temporarily kept in the zippy
namespace.

R=sesse
DELTA=123  (18 added, 3 deleted, 102 changed)


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1150

------------------------------------------------------------------------
r22 | snappy.mirrorbot@gmail.com | 2011-03-29 00:17:04 +0200 (Tue, 29 Mar 2011) | 11 lines


Put back the final few lines of what was truncated during the
license header change.

R=csilvers
DELTA=5  (4 added, 0 deleted, 1 changed)


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1094

------------------------------------------------------------------------
r21 | snappy.mirrorbot@gmail.com | 2011-03-26 03:34:34 +0100 (Sat, 26 Mar 2011) | 20 lines


Change on 2011-03-25 19:18:00-07:00 by sesse

	Replace the Apache 2.0 license header by the BSD-type license header;
	somehow a lot of the files were missed in the last round.

	R=dannyb,csilvers
	DELTA=147  (74 added, 2 deleted, 71 changed)

Change on 2011-03-25 19:25:07-07:00 by sesse

	Unbreak the build; the relicensing removed a bit too much (only comments
	were intended, but I also accidentially removed some of the top lines of
	the actual source).



Revision created by MOE tool push_codebase.
MOE_MIGRATION=1072

------------------------------------------------------------------------
r20 | snappy.mirrorbot@gmail.com | 2011-03-25 17:14:41 +0100 (Fri, 25 Mar 2011) | 10 lines


Change Snappy from the Apache 2.0 to a BSD-type license.

R=dannyb
DELTA=328  (80 added, 184 deleted, 64 changed)


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1061
3d2dab7
Jonathan Perkin jperkin referenced this issue from a commit
taca Update ramaze to 2012.03.07.
[aa5d48f | Mon Mar 05 19:08:01 UTC 2012] Yorick Peterse <yorickpeterse@gmail.com>

  * Updated the list of authors and the changelog.

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[8040c21 | Mon Mar 05 19:04:17 UTC 2012] Yorick Peterse <yorickpeterse@gmail.com>

  * Ramaze is now licensed under the MIT license.

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[b1e5d5c | Fri Mar 02 15:21:37 UTC 2012] John Pagonis <john@pagonis.org>

  * Explains how to reuse the existing middlewares stack with own middleware.

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[556597f | Fri Mar 02 12:41:53 UTC 2012] John Pagonis <john@pagonis.org>

  * Added a reference to the popular default Innate helpers to ramaze, to stop us wasting time looking for them.

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[df6bd77 | Fri Mar 02 11:01:37 UTC 2012] Yorick Peterse <yorick@isset.nl>

  * Added a general Git workflow link.

    As suggested by @pagojo I've added a link to a guide that describes the various
    steps of contributing to Github projects.

    Issue: #33

    Signed-off-by: Yorick Peterse <yorick@isset.nl>

[5ecdb93 | Thu Mar 01 19:05:56 UTC 2012] Yorick Peterse <yorickpeterse@gmail.com>

  * Woops, YARD can't resolve to Ramaze.start.

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[3f6168a | Thu Mar 01 18:58:17 UTC 2012] Yorick Peterse <yorickpeterse@gmail.com>

  * Expanded the sessions guide.

    It now includes a list of the available drivers (copied from the caching guide)
    as well as some instructions on how to change the adapter to use for session
    data.

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[7d5f8a0 | Thu Mar 01 18:48:42 UTC 2012] Yorick Peterse <yorickpeterse@gmail.com>

  * Describe how to write/test documentation.

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[d8a3cc4 | Thu Mar 01 13:46:44 UTC 2012] Yorick Peterse <yorick@isset.nl>

  * Small formatting changes for the middlewares guide

    See #33

    Signed-off-by: Yorick Peterse <yorick@isset.nl>

[346a202 | Thu Mar 01 13:45:02 UTC 2012] Yorick Peterse <yorick@isset.nl>

  * Removed trailing whitespace.

    See #33 for more information.

    Signed-off-by: Yorick Peterse <yorick@isset.nl>

[e125277 | Thu Mar 01 12:17:21 UTC 2012] John Pagonis <john@pagonis.org>

  * Clarified the middlewares documentation a bit.

    Signed-off-by: Yorick Peterse <yorick@isset.nl>

[5e9f80d | Wed Feb 29 20:12:54 UTC 2012] Yorick Peterse <yorickpeterse@gmail.com>

  * Updated the list of authors.

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[cd11c7f | Mon Feb 20 20:45:12 UTC 2012] Yorick Peterse <yorickpeterse@gmail.com>

  * Fixed the formatting of the User helper docs.

    See #32 for more information.

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[e9225b4 | Fri Feb 17 13:31:21 UTC 2012] John Pagonis <john@pagonis.org>

  * Corrected the user_login documentation.

    Signed-off-by: Yorick Peterse <yorick@isset.nl>

[846a4b3 | Thu Feb 16 19:22:14 UTC 2012] Yorick Peterse <yorickpeterse@gmail.com>

  * Improved the docs for the User helper a bit.

    See #30 for more information.

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[2475a04 | Sat Feb 04 13:04:04 UTC 2012] Michael Fellinger <m.fellinger@gmail.com>

  * update travis config

[4cfea2b | Wed Jan 25 14:35:19 UTC 2012] Yorick Peterse <yorickpeterse@gmail.com>

  * Re-generate CSRF tokens for valid requests.

    Re-generating the CSRF tokens on each valid request fixes the annoying issue of
    the tokens *always* expiring after 15 minutes. This is very annoying if you're
    trying to edit some content and all of a sudden you're unable to submit a form
    as the token has expired.

    See #27 for more information.

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[2e98ff1 | Wed Jan 25 14:29:20 UTC 2012] Yorick Peterse <yorickpeterse@gmail.com>

  * Removed a few more useless comments.

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[5cdc51c | Wed Jan 25 14:28:44 UTC 2012] Yorick Peterse <yorickpeterse@gmail.com>

  * No need to brush my ego that much.

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[b24669f | Wed Jan 25 14:26:27 UTC 2012] Yorick Peterse <yorickpeterse@gmail.com>

  * Removed some useless code.

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[e435ceb | Wed Jan 25 14:10:21 UTC 2012] Yorick Peterse <yorickpeterse@gmail.com>

  * Use Ramaze.setup for the view adapters.

    Using Ramaze.setup() for installing and loading the gems required for various
    view adapters should make it easier for developers to get started as they no
    longer have to deal with errors related to certain Gems not being installed.

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[17c909e | Wed Jan 25 14:03:37 UTC 2012] Yorick Peterse <yorickpeterse@gmail.com>

  * Added a few specifications for Slim.

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[969a02c | Wed Jan 25 13:42:20 UTC 2012] Yorick Peterse <yorickpeterse@gmail.com>

  * Docs for the Slim engine and cleaned it up a bit.

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[023d6cd | Wed Jan 25 13:35:36 UTC 2012] Yorick Peterse <yorickpeterse@gmail.com>

  * Removed a tab.

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[37f0f73 | Thu Jan 19 05:52:52 UTC 2012] Marc Weber <marco-oweber@gmx.de>

  * adding support for slim template engine

    thanks to yorickpeterse, manveru

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[561d528 | Tue Jan 17 18:23:19 UTC 2012] Yorick Peterse <yorickpeterse@gmail.com>

  * Fixed a small statement bug in the blog example.

    This bug would cause an exception to be raised whenever a user would try to log
    in with invalid details. Thanks to MarcWeber for reporting the issue.

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[e8b3786 | Tue Jan 17 17:14:52 UTC 2012] Yorick Peterse <yorickpeterse@gmail.com>

  * No need to boost my ego that much.

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[b33c13c | Tue Jan 17 17:04:10 UTC 2012] Michael Fellinger <m.fellinger@gmail.com>

  * fix some wikore bugs

[fb84aea | Wed Dec 28 17:29:21 UTC 2011] Yorick Peterse <yorickpeterse@gmail.com>

  * Release 2011.12.28

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[4553e0b | Wed Dec 28 05:13:22 UTC 2011] Michael Fellinger <m.fellinger@gmail.com>

  * Wrap Rack::File so we can continue to use Rack::Cascade

[f52f010 | Wed Dec 28 03:07:49 UTC 2011] Michael Fellinger <m.fellinger@gmail.com>

  * avoid shadow warning in controller

[c64833c | Wed Dec 28 02:58:55 UTC 2011] Michael Fellinger <m.fellinger@gmail.com>

  * fix shadowed variables in Thread#into

[4c66220 | Sat Dec 24 12:32:17 UTC 2011] Michael Fellinger <m.fellinger@gmail.com>

  * Update rvmrc to 1.9.3 and new convention

[de1a871 | Sat Dec 24 12:33:11 UTC 2011] Yorick Peterse <yorickpeterse@gmail.com>

  * Don't specify the exact amount of lines.

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[3b17e67 | Sat Dec 24 12:24:29 UTC 2011] Yorick Peterse <yorickpeterse@gmail.com>

  * Set Ramaze.options.roots in the intro tutorial.

    Without this Ramaze won't be able to properly locate your root directories and
    thus will fail to load views, layouts, etc.

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[88c5a38 | Wed Nov 09 18:26:11 UTC 2011] Yorick Peterse <yorickpeterse@gmail.com>

  * Use request.ip/request.host instead of request.env

    Using request.env['REMOTE_ADDR'] and request.env['REMOTE_HOST'] can break on
    certain environments (e.g. Heroku). Thanks to @stas for reporting the issue.

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>

[51c8d43 | Sun Oct 23 18:11:57 UTC 2011] Yorick Peterse <yorickpeterse@gmail.com>

  * Minor style changes to the Flash documentation.

    Signed-off-by: Yorick Peterse <yorickpeterse@gmail.com>
299b828
Jonathan Perkin jperkin referenced this issue from a commit
taca Update ruby-logging to 1.8.0.
== 1.8.0 / 2012-09-13

Enhancements
- Appenders handle string encodings [issue #46]
- Support for diagnostic contexts [issues #23, #32, #42]
- Enable JSON formatting of log message [issue #34]

Bug Fixes
- Fix clash with ActiveSupport autoloader (chewie) [issue #39]
7dcc5c7
Jonathan Perkin jperkin referenced this issue from a commit
taca Update ruby-coderay to 1.0.8.
* add :string/:char, remove :regexp/:function color from Terminal encoder [GH
  #29, thanks to Kyrylo Silin]
* allow - in line number anchor prefix for HTML encoder [GH #32, thanks to
  shurizzle]
* Fix HTML scanner: Don��t crash if HTML in a diff contains a JavaScript tag.
c157a34
Jonathan Perkin jperkin referenced this issue from a commit
asau Update to ABCL 1.2.1
Version 1.2.1
=============
http//abcl.org/svn/tags/abcl/1.2.1/CHANGES
27 June 2013
http://abcl.org/releases/1.2.1

*  Tested:  orcl-jdk-1.7.0_21 orcl-jdk-1.6.0_43

** ansi tests rc-2 failing 11-13 of 21708 total.
   Some regressions since 1.1.1

*  Stablility fixes; additional Quicklisp compatibility

** Fix (make-instance 'standard-generic-function)


Version 1.2.0
=============
http//abcl.org/svn/tags/1.2.0/abcl/CHANGES
released at ECLM 2013 Madrid, ES // 01 June 2013

   * Package local nicknames to behave like SBCL

   * ASDF 3.0.1 is now shipped with the implementation

   * a more robust MOP implementation

   * Common cases of creating purely synthetic JAVA:JNEW-RUNTIME-CLASS
     now (mostly) work.  Please report corner cases for fixing.

   * the system autoloader has been extended to cover functions bound to
     symbol properties

Issues Resolved
---------------

[#200]   ABCL compiler fails to produce loadable fasl for XPATH
[#321]   ASDF 3.01
[#256]   Compilation failure in com.informatimago
[#274]   compiling "com.informatimago.common-lisp.cesarum") hangs [> 10 minutes]
[#153]
 [#32]   Modify the currently disabled runtime-class.lisp code to not require ASM
[#152]   ql:closer-mop doesn't work
[#203]   Failure as build host for SBCL
[#300]   Gray streams aren't streams
[#302]   Symbols fail to autoload
[#303]   CL:LOAD ignores :EXTERNAL-FORMAT argument
[#304]   Stack abstraction inconsistency between Java and Lisp frames
[#308]   Compiled FLET exhausts the stack
[#309]   Printer should obey package-local nicknames
[#310]   Invocation of tests from from build.xml broken
[#311]   UIOP fails to upgrade
[#312]   BORDEAUX-THREADS-TEST::CONDITION-VARIABLE hangs
[#282]   Spurious macros redefinition warnings
e934aa7
Jonathan Perkin jperkin referenced this issue from a commit
wen Update to 1.4
Upstream changes:
1.4 (2013-07-23)

BACKWARD INCOMPATIBLE pip now only installs stable versions by default, and offers a new --pre option to also find pre-release and development versions. (Pull #834)
BACKWARD INCOMPATIBLE Dropped support for Python 2.5. The minimum supported Python version for pip 1.4 is Python 2.6.
Added support for installing and building wheel archives. Thanks Daniel Holth, Marcus Smith, Paul Moore, and Michele Lacchia (Pull #845)
Applied security patch to pip's ssl support related to certificate DNS wildcard matching (http://bugs.python.org/issue17980).
To satisfy pip's setuptools requirement, pip now recommends setuptools>=0.8, not distribute. setuptools and distribute are now merged into one project called 'setuptools'. (Pull #1003)
pip will now warn when installing a file that is either hosted externally to the index or cannot be verified with a hash. In the future pip will default to not installing them and will require the flags -allow-external NAME, and -allow-insecure NAME respectively. (Pull #985)
If an already-downloaded or cached file has a bad hash, re-download it rather than erroring out. (Issue #963).
pip bundle and support for installing from pybundle files is now considered deprecated and will be removed in pip v1.5.
Fixed a number of issues (#413, #709, #634, #602, and #939) related to cleaning up and not reusing build directories. (Pull #865, #948)
Added a User Agent so that pip is identifiable in logs. (Pull #901)
Added ssl and -user support to get-pip.py. Thanks Gabriel de Perthuis. (Pull #895)
Fixed the proxy support, which was broken in pip 1.3.x (Pull #840)
Fixed issue #32 - pip fails when server does not send content-type header. Thanks Hugo Lopes Tavares and Kelsey Hightower (Pull #872).
"Vendorized" distlib as pip.vendor.distlib (https://distlib.readthedocs.org/).
Fixed git VCS backend with git 1.8.3. (Pull #967)
0230bc1
Jonathan Perkin jperkin referenced this issue from a commit
asau Update to ABCL 1.2.1
Version 1.2.1
=============
http//abcl.org/svn/tags/abcl/1.2.1/CHANGES
27 June 2013
http://abcl.org/releases/1.2.1

*  Tested:  orcl-jdk-1.7.0_21 orcl-jdk-1.6.0_43

** ansi tests rc-2 failing 11-13 of 21708 total.
   Some regressions since 1.1.1

*  Stablility fixes; additional Quicklisp compatibility

** Fix (make-instance 'standard-generic-function)


Version 1.2.0
=============
http//abcl.org/svn/tags/1.2.0/abcl/CHANGES
released at ECLM 2013 Madrid, ES // 01 June 2013

   * Package local nicknames to behave like SBCL

   * ASDF 3.0.1 is now shipped with the implementation

   * a more robust MOP implementation

   * Common cases of creating purely synthetic JAVA:JNEW-RUNTIME-CLASS
     now (mostly) work.  Please report corner cases for fixing.

   * the system autoloader has been extended to cover functions bound to
     symbol properties

Issues Resolved
---------------

[#200]   ABCL compiler fails to produce loadable fasl for XPATH
[#321]   ASDF 3.01
[#256]   Compilation failure in com.informatimago
[#274]   compiling "com.informatimago.common-lisp.cesarum") hangs [> 10 minutes]
[#153]
 [#32]   Modify the currently disabled runtime-class.lisp code to not require ASM
[#152]   ql:closer-mop doesn't work
[#203]   Failure as build host for SBCL
[#300]   Gray streams aren't streams
[#302]   Symbols fail to autoload
[#303]   CL:LOAD ignores :EXTERNAL-FORMAT argument
[#304]   Stack abstraction inconsistency between Java and Lisp frames
[#308]   Compiled FLET exhausts the stack
[#309]   Printer should obey package-local nicknames
[#310]   Invocation of tests from from build.xml broken
[#311]   UIOP fails to upgrade
[#312]   BORDEAUX-THREADS-TEST::CONDITION-VARIABLE hangs
[#282]   Spurious macros redefinition warnings
57cc326
Jonathan Perkin jperkin referenced this issue from a commit
wen Update to 1.4
Upstream changes:
1.4 (2013-07-23)

BACKWARD INCOMPATIBLE pip now only installs stable versions by default, and offers a new --pre option to also find pre-release and development versions. (Pull #834)
BACKWARD INCOMPATIBLE Dropped support for Python 2.5. The minimum supported Python version for pip 1.4 is Python 2.6.
Added support for installing and building wheel archives. Thanks Daniel Holth, Marcus Smith, Paul Moore, and Michele Lacchia (Pull #845)
Applied security patch to pip's ssl support related to certificate DNS wildcard matching (http://bugs.python.org/issue17980).
To satisfy pip's setuptools requirement, pip now recommends setuptools>=0.8, not distribute. setuptools and distribute are now merged into one project called 'setuptools'. (Pull #1003)
pip will now warn when installing a file that is either hosted externally to the index or cannot be verified with a hash. In the future pip will default to not installing them and will require the flags -allow-external NAME, and -allow-insecure NAME respectively. (Pull #985)
If an already-downloaded or cached file has a bad hash, re-download it rather than erroring out. (Issue #963).
pip bundle and support for installing from pybundle files is now considered deprecated and will be removed in pip v1.5.
Fixed a number of issues (#413, #709, #634, #602, and #939) related to cleaning up and not reusing build directories. (Pull #865, #948)
Added a User Agent so that pip is identifiable in logs. (Pull #901)
Added ssl and -user support to get-pip.py. Thanks Gabriel de Perthuis. (Pull #895)
Fixed the proxy support, which was broken in pip 1.3.x (Pull #840)
Fixed issue #32 - pip fails when server does not send content-type header. Thanks Hugo Lopes Tavares and Kelsey Hightower (Pull #872).
"Vendorized" distlib as pip.vendor.distlib (https://distlib.readthedocs.org/).
Fixed git VCS backend with git 1.8.3. (Pull #967)
0084fae
Jonathan Perkin jperkin referenced this issue from a commit
obache Update ruby-multipart-post to 2.0.0.
=== 2.0.0 / 2013-12-21

- Drop Ruby 1.8 compatibility
- GH #21: Fix FilePart length calculation for Ruby 1.9 when filename contains
  multibyte characters (hexfet)
- GH #20: Ensure upload responds to both #content_type and #original_filename
  (Steven Davidovitz)
- GH #31: Support setting headers on any part of the request (Socrates Vicente)
- GH #30: Support array values for params (Gustav Ernberg)
- GH #32: Fix respond_to? signature (Leo Cassarani)
- GH #33: Update README to markdown (Jagtesh Chadha)
- GH #35: Improved handling of array-type parameters (Steffen Grunwald)
21dd246
Jonathan Perkin jperkin referenced this issue from a commit
wiz Import py27-fits-3.2 as graphics/py-fits.
FITS (Flexible Image Transport System) is a data format most used in astronomy.
PyFITS is a Python module for reading, writing, and manipulating FITS files.
The module uses Python's object-oriented features to provide quick, easy, and
efficient access to FITS files. The use of Python's array syntax enables
immediate access to any FITS extension, header cards, or data items.

Changes to 2.4.0 (in py-pyfits):

Changelog
===========

3.2 (2013-11-26)
----------------

Highlights
^^^^^^^^^^

- Rewrote CFITSIO-based backend for handling tile compression of FITS files.
  It now uses a standard CFITSIO instead of heavily modified pieces of CFITSIO
  as before.  PyFITS ships with its own copy of CFITSIO v3.35 which supports
  the latest version of the Tiled Image Convention (v2.3), but system
  packagers may choose instead to strip this out in favor of a
  system-installed version of CFITSIO.  Earlier versions may work, but nothing
  earlier than 3.28 has been tested yet. (#169)

- Added support for reading and writing tables using the Q format for columns.
  The Q format is identical to the P format (variable-length arrays) except
  that it uses 64-bit integers for the data descriptors, allowing more than
  4 GB of variable-length array data in a single table. (#160)

- Added initial support for table columns containing pseudo-unsigned integers.
  This is currently enabled by using the ``uint=True`` option when opening
  files; any table columns with the correct BZERO value will be interpreted
  and returned as arrays of unsigned integers.

- Some refactoring of the table and ``FITS_rec`` modules in order to better
  separate the details of the FITS binary and ASCII table data structures from
  the HDU data structures that encapsulate them.  Most of these changes should
  not be apparent to users (but see API Changes below).


API Changes
^^^^^^^^^^^

- Assigning to values in ``ColDefs.names``, ``ColDefs.formats``,
  ``ColDefs.nulls`` and other attributes of ``ColDefs`` instances that return
  lists of column properties is no longer supported.  Assigning to those lists
  will no longer update the corresponding columns.  Instead, please just
  modify the ``Column`` instances directly (``Column.name``, ``Column.null``,
  etc.)

- The ``pyfits.new_table`` function is marked "pending deprecation".  This
  does not mean it will be removed outright or that its functionality has
  changed.  It will likely be replaced in the future for a function with
  similar, if not subtly different functionality.  A better, if not slightly
  more verbose approach is to use ``pyfits.FITS_rec.from_columns`` to create
  a new ``FITS_rec`` table--this has the same interface as
  ``pyfits.new_table``.  The difference is that it returns a plan ``FITS_rec``
  array, and not an HDU instance.  This ``FITS_rec`` object can then be used
  as the data argument in the constructors for ``BinTableHDU`` (for binary
  tables) or ``TableHDU`` (for ASCII tables).  This is analogous to creating
  an ``ImageHDU`` by passing in an image array.
  ``pyfits.FITS_rec.from_columns`` is just a simpler way of creating a
  FITS-compatible recarray from a FITS column specification.

- The ``updateHeader``, ``updateHeaderData``, and ``updateCompressedData``
  methods of the ``CompDataHDU`` class are pending deprecation and moved to
  internal methods.  The operation of these methods depended too much on
  internal state to be used safely by users; instead they are invoked
  automatically in the appropriate places when reading/writing compressed image
  HDUs.

- The ``CompDataHDU.compData`` attribute is pending deprecation in favor of
  the clearer and more PEP-8 compatible ``CompDataHDU.compressed_data``.

- The constructor for ``CompDataHDU`` has been changed to accept new keyword
  arguments.  The new keyword arguments are essentially the same, but are in
  underscore_separated format rather than camelCase format.  The old arguments
  are still pending deprecation.

- The internal attributes of HDU classes ``_hdrLoc``, ``_datLoc``, and
  ``_datSpan`` have been replaced with ``_header_offset``, ``_data_offset``,
  and ``_data_size`` respectively.  The old attribute names are still pending
  deprecation.  This should only be of interest to advanced users who have
  created their own HDU subclasses.

- The following previously deprecated functions and methods have been removed
  entirely: ``createCard``, ``createCardFromString``, ``upperKey``,
  ``ColDefs.data``, ``setExtensionNameCaseSensitive``, ``_File.getfile``,
  ``_TableBaseHDU.get_coldefs``, ``Header.has_key``, ``Header.ascardlist``.

  If you run your code with a previous version of PyFITS (>= 3.0, < 3.2) with
  the ``python -Wd`` argument, warnings for all deprecated interfaces still in
  use will be displayed.

- Interfaces that were pending deprecation are now fully deprecated.  These
  include: ``create_card``, ``create_card_from_string``, ``upper_key``,
  ``Header.get_history``, and ``Header.get_comment``.

- The ``.name`` attribute on HDUs is now directly tied to the HDU's header, so
  that if ``.header['EXTNAME']`` changes so does ``.name`` and vice-versa.

- The ``pyfits.file.PYTHON_MODES`` constant dict was renamed to
  ``pyfits.file.PYFITS_MODES`` which better reflects its purpose.  This is
  rarely used by client code, however.  Support for the old name will be
  removed by PyFITS 3.4.


Other Changes and Additions
^^^^^^^^^^^^^^^^^^^^^^^^^^^

- The new compression code also adds support for the ZQUANTIZ and ZDITHER0
  keywords added in more recent versions of this FITS Tile Compression spec.
  This includes support for lossless compression with GZIP. (#198) By default
  no dithering is used, but the ``SUBTRACTIVE_DITHER_1`` and
  ``SUBTRACTIVE_DITHER_2`` methods can be enabled by passing the correct
  constants to the ``quantize_method`` argument to the ``CompImageHDU``
  constuctor.  A seed can be manually specified, or automatically generated
  using either the system clock or checksum-based methods via the
  ``dither_seed`` argument.  See the documentation for ``CompImageHDU`` for
  more details. (#198) (spacetelescope/PYFITS#32)

- Images compressed with the Tile Compression standard can now be larger than
  4 GB through support of the Q format. (#159)

- All HDUs now have a ``.ver`` ``.level`` attribute that returns the value of
  the EXTVAL and EXTLEVEL keywords from that HDU's header, if the exist.  This
  was added for consistency with the ``.name`` attribute which returns the
  EXTNAME value from the header.

- Then ``Column`` and ``ColDefs`` classes have new ``.dtype`` attributes
  which give the Numpy dtype for the column data in the first case, and the
  full Numpy compound dtype for each table row in the latter case.

- There was an issue where new tables created defaulted the values in all
  string columns to '0.0'.  Now string columns are filled with empty strings
  by default--this seems a less surprising default, but it may cause
  differences with tables created with older versions of PyFITS.

- Improved round-tripping and preservation of manually assigned column
  attributes (``TNULLn``, ``TSCALn``, etc.) in table HDU headers.
  (astropy/astropy#996)


Bug Fixes
^^^^^^^^^

- Binary tables containing compressed images may, optionally, contain other
  columns unrelated to the tile compression convention. Although this is an
  uncommon use case, it is permitted by the standard. (#159)

- Reworked some of the file I/O routines to allow simpler, more consistent
  mapping between OS-level file modes ('rb', 'wb', 'ab', etc.) and the more
  "PyFITS-specific" modes used by PyFITS like "readonly" and "update".
  That is, if reading a FITS file from an open file object, it doesn't matter
  as much what "mode" it was opened in so long as it has the right
  capabilities (read/write/etc.)  Also works around bugs in the Python io
  module in 2.6+ with regard to file modes. (spacetelescope/PyFITS#33)

- Fixed an obscure issue that can occur on systems that don't have flush to
  memory-mapped files implemented (namely GNU Hurd). (astropy/astropy#968)


3.1.3 (2013-11-26)
------------------

- Disallowed assigning NaN and Inf floating point values as header values,
  since the FITS standard does not define a way to represent them in. Because
  this is undefined, the previous behavior did not make sense and produced
  invalid FITS files. (spacetelescope/PyFITS#11)

- Added a workaround for a bug in 64-bit OSX that could cause truncation when
  writing files greater than 2^32 bytes in size. (spacetelescope/PyFITS#28)

- Fixed a long-standing issue where writing binary tables did not correctly
  write the TFORMn keywords for variable-length array columns (they ommitted
  the max array length parameter of the format).  This was thought fixed in
  v3.1.2, but it was only fixed there for compressed image HDUs and not for
  binary tables in general.

- Fixed an obscure issue that can occur on systems that don't have flush to
  memory-mapped files implemented (namely GNU Hurd). (Backported from 3.2)


3.0.12 (2013-11-26)
-------------------

- Disallowed assigning NaN and Inf floating point values as header values,
  since the FITS standard does not define a way to represent them in. Because
  this is undefined, the previous behavior did not make sense and produced
  invalid FITS files. (Backported from 3.1.3)

- Added a workaround for a bug in 64-bit OSX that could cause truncation when
  writing files greater than 2^32 bytes in size. (Backported from 3.1.3)

- Fixed a long-standing issue where writing binary tables did not correctly
  write the TFORMn keywords for variable-length array columns (they ommitted
  the max array length parameter of the format).  This was thought fixed in
  v3.1.2, but it was only fixed there for compressed image HDUs and not for
  binary tables in general. (Backported from 3.1.3)

- Fixed an obscure issue that can occur on systems that don't have flush to
  memory-mapped files implemented (namely GNU Hurd). (Backported from 3.2)


3.1.2 (2013-04-22)
------------------

- When an error occurs opening a file in fitsdiff the exception message will
  now at least mention which file had the error. (#168)

- Fixed support for opening gzipped FITS files by filename in a writeable mode
  (PyFITS has supported writing to gzip files for some time now, but only
  enabled it when GzipFile objects were passed to ``pyfits.open()`` due to
  some legacy code preventing full gzip support. (#195)

- Added a more helpful error message in the case of malformatted FITS files
  that contain non-float NULL values in an ASCII table but are missing the
  required TNULLn keywords in the header. (#197)

- Fixed an (apparently long-standing) issue where writing compressed images
  did not correctly write the TFORMn keywords for variable-length array
  columns (they ommitted the max array length parameter of the format). (#199)

- Slightly refactored how tables containing variable-length array columns are
  handled to add two improvements: Fixes an issue where accessing the data
  after a call to the `pyfits.getdata` convenience function caused an
  exception, and allows the VLA data to be read from an existing mmap of the
  FITS file. (#200)

- Fixed a bug that could occur when opening a table containing
  multi-dimensional columns (i.e. via the TDIMn keyword) and then writing it
  out to a new file. (#201)

- Added use of the console_scripts entry point to install the fitsdiff and
  fitscheck scripts, which if nothing else provides better Windows support.
  The generated scripts now override the ones explicitly defined in the
  scripts/ directory (which were just trivial stubs to begin with). (#202)

- Fixed a bug on Python 3 where attempting to open a non-existent file on
  Python 3 caused a seemingly unrelated traceback. (#203)

- Fixed a bug in fitsdiff that reported two header keywords containing NaN
  as value as different. (#204)

- Fixed an issue in the tests that caused some tests to fail if pyfits is
  installed with read-only permissions. (#208)

- Fixed a bug where instantiating a ``BinTableHDU`` from a numpy array
  containing boolean fields converted all the values to ``False``. (#215)

- Fixed an issue where passing an array of integers into the constructor of
  ``Column()`` when the column type is floats of the same byte width caused the
  column array to become garbled. (#218)

- Fixed inconsistent behavior in creating CONTINUE cards from byte strings
  versus unicode strings in Python 2--CONTINUE cards can now be created
  properly from unicode strings (so long as they are convertable to ASCII).
  (spacetelescope/PyFITS#1)

- Fixed a couple cases where creating a new table using TDIMn in some of the
  columns could caused a crash. (spacetelescope/PyFITS#3)

- Fixed a bug in parsing HIERARCH keywords that do not have a space after
  the first equals sign (before the value). (spacetelescope/PyFITS#5)

- Prevented extra leading whitespace on HIERARCH keywords from being treated
  as part of the keyword. (spacetelescope/PyFITS#6)

- Fixed a bug where HIERARCH keywords containing lower-case letters was
  mistakenly marked as invalid during header validation.
  (spacetelescope/PyFITS#7)

- Fixed an issue that was ancillary to (spacetelescope/PyFITS#7) where the
  ``Header.index()`` method did not work correctly with HIERARCH keywords
  containing lower-case letters.


3.0.11 (2013-04-17)
-------------------

- Fixed support for opening gzipped FITS files by filename in a writeable mode
  (PyFITS has supported writing to gzip files for some time now, but only
  enabled it when GzipFile objects were passed to ``pyfits.open()`` due to
  some legacy code preventing full gzip support. Backported from 3.1.2. (#195)

- Added a more helpful error message in the case of malformatted FITS files
  that contain non-float NULL values in an ASCII table but are missing the
  required TNULLn keywords in the header. Backported from 3.1.2. (#197)

- Fixed an (apparently long-standing) issue where writing compressed images did
  not correctly write the TFORMn keywords for variable-length array columns
  (they ommitted the max array length parameter of the format). Backported from
  3.1.2. (#199)

- Slightly refactored how tables containing variable-length array columns are
  handled to add two improvements: Fixes an issue where accessing the data
  after a call to the `pyfits.getdata` convenience function caused an
  exception, and allows the VLA data to be read from an existing mmap of the
  FITS file. Backported from 3.1.2. (#200)

- Fixed a bug that could occur when opening a table containing
  multi-dimensional columns (i.e. via the TDIMn keyword) and then writing it
  out to a new file. Backported from 3.1.2. (#201)

- Fixed a bug on Python 3 where attempting to open a non-existent file on
  Python 3 caused a seemingly unrelated traceback. Backported from 3.1.2.
  (#203)

- Fixed a bug in fitsdiff that reported two header keywords containing NaN
  as value as different. Backported from 3.1.2. (#204)

- Fixed an issue in the tests that caused some tests to fail if pyfits is
  installed with read-only permissions. Backported from 3.1.2. (#208)

- Fixed a bug where instantiating a ``BinTableHDU`` from a numpy array
  containing boolean fields converted all the values to ``False``. Backported
  from 3.1.2. (#215)

- Fixed an issue where passing an array of integers into the constructor of
  ``Column()`` when the column type is floats of the same byte width caused the
  column array to become garbled. Backported from 3.1.2. (#218)

- Fixed a couple cases where creating a new table using TDIMn in some of the
  columns could caused a crash. Backported from 3.1.2.
  (spacetelescope/PyFITS#3)


3.1.1 (2013-01-02)
------------------

This is a bug fix release for the 3.1.x series.

Bug Fixes
^^^^^^^^^

- Improved handling of scaled images and pseudo-unsigned integer images in
  compressed image HDUs.  They now work more transparently like normal image
  HDUs with support for the ``do_not_scale_image_data`` and ``uint`` options,
  as well as ``scale_back`` and ``save_backup``.  The ``.scale()`` method
  works better too. (#88)

- Permits non-string values for the EXTNAME keyword when reading in a file,
  rather than throwing an exception due to the malformatting.  Added
  verification for the format of the EXTNAME keyword when writing. (#96)

- Added support for EXTNAME and EXTVER in PRIMARY HDUs.  That is, if EXTNAME
  is specified in the header, it will also be reflected in the ``.name``
  attribute and in ``pyfits.info()``.  These keywords used to be verboten in
  PRIMARY HDUs, but the latest version of the FITS standard allows them.
  (#151)

- HCOMPRESS can again be used to compress data cubes (and higher-dimensional
  arrays) so long as the tile size is effectively 2-dimensional. In fact,
  PyFITS will automatically use compatible tile sizes even if they're not
  explicitly specified. (#171)

- Added support for the optional ``endcard`` parameter in the
  ``Header.fromtextfile()`` and ``Header.totextfile()`` methods.  Although
  ``endcard=False`` was a reasonable default assumption, there are still text
  dumps of FITS headers that include the END card, so this should have been
  more flexible. (#176)

- Fixed a crash when running fitsdiff on two empty (that is, zero row) tables.
  (#178)

- Fixed an issue where opening files containing random groups HDUs in update
  mode could cause an unnecessary rewrite of the file even if none of the
  data is modified. (#179)

- Fixed a bug that could caused a deadlock in the filesystem on OSX if PyFITS
  is used with Numpy 1.7 in some cases. (#180)

- Fixed a crash when generating diff reports from diffs using the
  ``ignore_comments`` options. (#181)

- Fixed some bugs with WCS Paper IV record-valued keyword cards:

  - Cards that looked kind of like RVKCs but were not intended to be were
    over-permissively treated as such--commentary keywords like COMMENT and
    HISTORY were particularly affected. (#183)

  - Looking up a card in a header by its standard FITS keyword only should
    always return the raw value of that card.  That way cards containing
    values that happen to valid RVKCs but were not intended to be will still
    be treated like normal cards. (#184)

  - Looking up a RVKC in a header with only part of the field-specifier (for
    example "DP1.AXIS" instead of "DP1.AXIS.1") was implicitly treated as a
    wildcard lookup. (#184)

- Fixed a crash when diffing two FITS files where at least one contains a
  compressed image HDU which was not recognized as an image instead of a
  table. (#187)

- Fixed bugs in the backwards compatibility layer for the ``CardList.index``
  and ``CardList.count`` methods. (#190)

- Improved ``__repr__`` and text file representation of cards with long values
  that are split into CONTINUE cards. (#193)

- Fixed a crash when trying to assign a long (> 72 character) value to blank
  ('') keywords. This also changed how blank keywords are represented--there
  are still exactly 8 spaces before any commentary content can begin; this
  *may* affect the exact display of header cards that assumed there could be
  fewer spaces in a blank keyword card before the content begins. However, the
  current approach is more in line with the requirements of the FITS standard.
  (#194)


3.0.10 (2013-01-02)
-------------------

- Improved handling of scaled images and pseudo-unsigned integer images in
  compressed image HDUs.  They now work more transparently like normal image
  HDUs with support for the ``do_not_scale_image_data`` and ``uint`` options,
  as well as ``scale_back`` and ``save_backup``.  The ``.scale()`` method
  works better too.  Backported from 3.1.1. (#88)

- Permits non-string values for the EXTNAME keyword when reading in a file,
  rather than throwing an exception due to the malformatting.  Added
  verification for the format of the EXTNAME keyword when writing.  Backported
  from 3.1.1. (#96)

- Added support for EXTNAME and EXTVER in PRIMARY HDUs.  That is, if EXTNAME
  is specified in the header, it will also be reflected in the ``.name``
  attribute and in ``pyfits.info()``.  These keywords used to be verbotten in
  PRIMARY HDUs, but the latest version of the FITS standard allows them.
  Backported from 3.1.1. (#151)

- HCOMPRESS can again be used to compress data cubes (and higher-dimensional
  arrays) so long as the tile size is effectively 2-dimensional. In fact,
  PyFITS will not automatically use compatible tile sizes even if they're not
  explicitly specified.  Backported from 3.1.1. (#171)

- Fixed a bug when writing out files containing zero-width table columns,
  where the TFIELDS keyword would be updated incorrectly, leaving the table
  largely unreadable.  Backported from 3.1.0. (#174)

- Fixed an issue where opening files containing random groups HDUs in update
  mode could cause an unnecessary rewrite of the file even if none of the
  data is modified.  Backported from 3.1.1. (#179)

- Fixed a bug that could caused a deadlock in the filesystem on OSX if PyFITS
  is used with Numpy 1.7 in some cases. Backported from 3.1.1. (#180)


3.1 (2012-08-08)
----------------

Highlights
^^^^^^^^^^

- The ``Header`` object has been significantly reworked, and ``CardList``
  objects are now deprecated (their functionality folded into the ``Header``
  class).  See API Changes below for more details.

- Memory maps are now used by default to access HDU data.  See API Changes
  below for more details.

- Now includes a new version of the ``fitsdiff`` program for comparing two
  FITS files, and a new FITS comparison API used by ``fitsdiff``.  See New
  Features below.

API Changes
^^^^^^^^^^^

- The ``Header`` class has been rewritten, and the ``CardList`` class is
  deprecated.  Most of the basic details of working with FITS headers are
  unchanged, and will not be noticed by most users.  But there are differences
  in some areas that will be of interest to advanced users, and to application
  developers.  For full details of the changes, see the "Header Interface
  Transition Guide" section in the PyFITS documentation.  See ticket #64 on
  the PyFITS Trac for futher details and background. Some highlights are
  listed below:

  * The Header class now fully implements the Python dict interface, and can
    be used interchangably with a dict, where the keys are header keywords.

  * New keywords can be added to the header using normal keyword assignment
    (previously it was necessary to use ``Header.update`` to add new
    keywords).  For example::

        >>> header['NAXIS'] = 2

    will update the existing 'FOO' keyword if it already exists, or add a new
    one if it doesn't exist, just like a dict.

  * It is possible to assign both a value and a comment at the same time using
    a tuple::

        >>> header['NAXIS'] = (2, 'Number of axes')

  * To add/update a new card and ensure it's added in a specific location, use
    ``Header.set()``::

        >>> header.set('NAXIS', 2, 'Number of axes', after='BITPIX')

    This works the same as the old ``Header.update()``.  ``Header.update()``
    still works in the old way too, but is deprecated.

  * Although ``Card`` objects still exist, it generally is not necessary to
    work with them directly.  ``Header.ascardlist()``/``Header.ascard`` are
    deprecated and should not be used.  To directly access the ``Card``
    objects in a header, use ``Header.cards``.

  * To access card comments, it is still possible to either go through the
    card itself, or through ``Header.comments``.  For example::

       >>> header.cards['NAXIS'].comment
       Number of axes
       >>> header.comments['NAXIS']
       Number of axes

  * ``Card`` objects can now be used interchangeably with
    ``(keyword, value, comment)`` 3-tuples.  They still have ``.value`` and
    ``.comment`` attributes as well.  The ``.key`` attribute has been renamed
    to ``.keyword`` for consistency, though ``.key`` is still supported (but
    deprecated).

- Memory mapping is now used by default to access HDU data.  That is,
  ``pyfits.open()`` uses ``memmap=True`` as the default.  This provides better
  performance in the majority of use cases--there are only some I/O intensive
  applications where it might not be desirable.  Enabling mmap by default also
  enabled finding and fixing a large number of bugs in PyFITS' handling of
  memory-mapped data (most of these bug fixes were backported to PyFITS
  3.0.5). (#85)

  * A new ``pyfits.USE_MEMMAP`` global variable was added.  Set
    ``pyfits.USE_MEMMAP = False`` to change the default memmap setting for
    opening files.  This is especially useful for controlling the behavior in
    applications where pyfits is deeply embedded.

  * Likewise, a new ``PYFITS_USE_MEMMAP`` environment variable is supported.
    Set ``PYFITS_USE_MEMMAP = 0`` in your environment to change the default
    behavior.

- The ``size()`` method on HDU objects is now a ``.size`` property--this
  returns the size in bytes of the data portion of the HDU, and in most cases
  is equivalent to ``hdu.data.nbytes`` (#83)

- ``BinTableHDU.tdump`` and ``BinTableHDU.tcreate`` are deprecated--use
  ``BinTableHDU.dump`` and ``BinTableHDU.load`` instead.  The new methods
  output the table data in a slightly different format from previous versions,
  which places quotes around each value.  This format is compatible with data
  dumps from previous versions of PyFITS, but not vice-versa due to a parsing
  bug in older versions.

- Likewise the ``pyfits.tdump`` and ``pyfits.tcreate`` convenience function
  versions of these methods have been renamed ``pyfits.tabledump`` and
  ``pyfits.tableload``.  The old deprecated, but currently retained for
  backwards compatibility. (r1125)

- A new global variable ``pyfits.EXTENSION_NAME_CASE_SENSITIVE`` was added.
  This serves as a replacement for ``pyfits.setExtensionNameCaseSensitive``
  which is not deprecated and may be removed in a future version.  To enable
  case-sensitivity of extension names (i.e. treat 'sci' as distict from 'SCI')
  set ``pyfits.EXTENSION_NAME_CASE_SENSITIVE = True``.  The default is
  ``False``. (r1139)

- A new global configuration variable ``pyfits.STRIP_HEADER_WHITESPACE`` was
  added.  By default, if a string value in a header contains trailing
  whitespace, that whitespace is automatically removed when the value is read.
  Now if you set ``pyfits.STRIP_HEADER_WHITESPACE = False`` all whitespace is
  preserved. (#146)

- The old ``classExtensions`` extension mechanism (which was deprecated in
  PyFITS 3.0) is removed outright.  To our knowledge it was no longer used
  anywhere. (r1309)

- Warning messages from PyFITS issued through the Python warnings API are now
  output to stderr instead of stdout, as is the default.  PyFITS no longer
  modifies the default behavior of the warnings module with respect to which
  stream it outputs to. (r1319)

- The ``checksum`` argument to ``pyfits.open()`` now accepts a value of
  'remove', which causes any existing CHECKSUM/DATASUM keywords to be ignored,
  and removed when the file is saved.

New Features
^^^^^^^^^^^^

- Added support for the proposed "FITS" extension HDU type.  See
  http://listmgr.cv.nrao.edu/pipermail/fitsbits/2002-April/001094.html.  FITS
  HDUs contain an entire FITS file embedded in their data section.  `FitsHDU`
  objects work like other HDU types in PyFITS.  Their ``.data`` attribute
  returns the raw data array.  However, they have a special ``.hdulist``
  attribute which processes the data as a FITS file and returns it as an
  in-memory HDUList object.  FitsHDU objects also support a
  ``FitsHDU.fromhdulist()`` classmethod which returns a new `FitsHDU` object
  that embeds the supplied HDUList. (#80)

- Added a new ``.is_image`` attribute on HDU objects, which is True if the HDU
  data is an 'image' as opposed to a table or something else.  Here the
  meaning of 'image' is fairly loose, and mostly just means a Primary or Image
  extension HDU, or possibly a compressed image HDU (#71)

- Added an ``HDUList.fromstring`` classmethod which can parse a FITS file
  already in memory and instantiate and ``HDUList`` object from it.  This
  could be useful for integrating PyFITS with other libraries that work on
  FITS file, such as CFITSIO.  It may also be useful in streaming
  applications.  The name is a slight misnomer, in that it actually accepts
  any Python object that implements the buffer interface, which includes
  ``bytes``, ``bytearray``, ``memoryview``, ``numpy.ndarray``, etc. (#90)

- Added a new ``pyfits.diff`` module which contains facilities for comparing
  FITS files.  One can use the ``pyfits.diff.FITSDiff`` class to compare two
  FITS files in their entirety.  There is also a ``pyfits.diff.HeaderDiff``
  class for just comparing two FITS headers, and other similar interfaces.
  See the PyFITS Documentation for more details on this interface.  The
  ``pyfits.diff`` module powers the new ``fitsdiff`` program installed with
  PyFITS.  After installing PyFITS, run ``fitsdiff --help`` for usage details.

- ``pyfits.open()`` now accepts a ``scale_back`` argument.  If set to
  ``True``, this automatically scales the data using the original BZERO and
  BSCALE parameters the file had when it was first opened, if any, as well as
  the original BITPIX.  For example, if the original BITPIX were 16, this
  would be equivalent to calling ``hdu.scale('int16', 'old')`` just before
  calling ``flush()`` or ``close()`` on the file.  This option applies to all
  HDUs in the file. (#120)

- ``pyfits.open()`` now accepts a ``save_backup`` argument.  If set to
  ``True``, this automatically saves a backup of the original file before
  flushing any changes to it (this of course only applies to update and append
  mode).  This may be especially useful when working with scaled image data.
  (#121)

Changes in Behavior
^^^^^^^^^^^^^^^^^^^

- Warnings from PyFITS are not output to stderr by default, instead of stdout
  as it has been for some time.  This is contrary to most users' expectations
  and makes it more difficult for them to separate output from PyFITS from the
  desired output for their scripts. (r1319)

Bug Fixes
^^^^^^^^^

- Fixed ``pyfits.tcreate()`` (now ``pyfits.tableload()``) to be more robust
  when encountering blank lines in a column definition file (#14)

- Fixed a fairly rare crash that could occur in the handling of CONTINUE cards
  when using Numpy 1.4 or lower (though 1.4 is the oldest version supported by
  PyFITS). (r1330)

- Fixed ``_BaseHDU.fromstring`` to actually correctly instantiate an HDU
  object from a string/buffer containing the header and data of that HDU.
  This allowed for the implementation of ``HDUList.fromstring`` described
  above. (#90)

- Fixed a rare corner case where, in some use cases, (mildly, recoverably)
  malformatted float values in headers were not properly returned as floats.
  (#137)

- Fixed a corollary to the previous bug where float values with a leading zero
  before the decimal point had the leading zero unnecessarily removed when
  saving changes to the file (eg. "0.001" would be written back as ".001" even
  if no changes were otherwise made to the file). (#137)

- When opening a file containing CHECKSUM and/or DATASUM keywords in update
  mode, the CHECKSUM/DATASUM are updated and preserved even if the file was
  opened with checksum=False.  This change in behavior prevents checksums from
  being unintentionally removed. (#148)

- Fixed a bug where ``ImageHDU.scale(option='old')`` wasn't working at all--it
  was not restoring the image to its original BSCALE and BZERO values. (#162)

- Fixed a bug when writing out files containing zero-width table columns,
  where the TFIELDS keyword would be updated incorrectly, leaving the table
  largely unreadable.  This fix will be backported to the 3.0.x series in
  version 3.0.10.  (#174)


3.0.9 (2012-08-06)
------------------

This is a bug fix release for the 3.0.x series.

Bug Fixes
^^^^^^^^^

- Fixed ``Header.values()``/``Header.itervalues()`` and ``Header.items()``/
  ``Header.iteritems()`` to correctly return the different values for
  duplicate keywords (particularly commentary keywords like HISTORY and
  COMMENT).  This makes the old Header implementation slightly more compatible
  with the new implementation in PyFITS 3.1. (#127)

  .. note::
      This fix did not change the existing behavior from earlier PyFITS
      versions where ``Header.keys()`` returns all keywords in the header with
      duplicates removed.  PyFITS 3.1 changes that behavior, so that
      ``Header.keys()`` includes duplicates.

- Fixed a bug where ``ImageHDU.scale(option='old')`` wasn't working at all--it
  was not restoring the image to its original BSCALE and BZERO values. (#162)

- Fixed a bug where opening a file containing compressed image HDUs in
  'update' mode and then immediately closing it without making any changes
  caused the file to be rewritten unncessarily. (#167)

- Fixed two memory leaks that could occur when writing compressed image data,
  or in some cases when opening files containing compressed image HDUs in
  'update' mode. (#168)


3.0.8 (2012-06-04)
------------------

Changes in Behavior
^^^^^^^^^^^^^^^^^^^

- Prior to this release, image data sections did not work with scaled
  data--that is, images with non-trivial BSCALE and/or BZERO values.
  Previously, in order to read such images in sections, it was necessary to
  manually apply the BSCALE+BZERO to each section.  It's worth noting that
  sections *did* support pseudo-unsigned ints (flakily).  This change just
  extends that support for general BSCALE+BZERO values.

Bug Fixes
^^^^^^^^^

- Fixed a bug that prevented updates to values in boolean table columns from
  being saved.  This turned out to be a symptom of a deeper problem that could
  prevent other table updates from being saved as well. (#139)

- Fixed a corner case in which a keyword comment ending with the string "END"
  could, in some circumstances, cause headers (and the rest of the file after
  that point) to be misread. (#142)

- Fixed support for scaled image data and psuedo-unsigned ints in image data
  sections (``hdu.section``).  Previously this was not supported at all.  At
  some point support was supposedly added, but it was buggy and incomplete.
  Now the feature seems to work much better. (#143)

- Fixed the documentation to point out that image data sections *do* support
  non-contiguous slices (and have for a long time).  The documentation was
  never updated to reflect this, and misinformed users that only contiguous
  slices were supported, leading to some confusion. (#144)

- Fixed a bug where creating an ``HDUList`` object containing multiple PRIMARY
  HDUs caused an infinite recursion when validating the object prior to
  writing to a file. (#145)

- Fixed a rare but serious case where saving an update to a file that
  previously had a CHECKSUM and/or DATASUM keyword, but removed the checksum
  in saving, could cause the file to be slightly corrupted and unreadable.
  (#147)

- Fixed problems with reading "non-standard" FITS files with primary headers
  containing SIMPLE = F.  PyFITS has never made many guarantees as to how such
  files are handled.  But it should at least be possible to read their
  headers, and the data if possible.  Saving changes to such a file should not
  try to prepend an unwanted valid PRIMARY HDU. (#157)

- Fixed a bug where opening an image with ``disable_image_compression = True``
  caused compression to be disabled for all subsequent ``pyfits.open()`` calls.
  (r1651)


3.0.7 (2012-04-10)
------------------

Changes in Behavior
^^^^^^^^^^^^^^^^^^^

- Slices of GroupData objects now return new GroupData objects instead of
  extended multi-row _Group objects. This is analogous to how PyFITS 3.0 fixed
  FITS_rec slicing, and should have been fixed for GroupData at the same time.
  The old behavior caused bugs where functions internal to Numpy expected that
  slicing an ndarray would return a new ndarray.  As this is a rare usecase
  with a rare feature most users are unlikely to be affected by this change.

- The previously internal _Group object for representing individual group
  records in a GroupData object are renamed Group and are now a public
  interface.  However, there's almost no good reason to create Group objects
  directly, so it shouldn't be considered a "new feature".

- An annoyance from PyFITS 3.0.6 was fixed, where the value of the EXTEND
  keyword was always being set to F if there are not actually any extension
  HDUs.  It was unnecessary to modify this value.

Bug Fixes
^^^^^^^^^

- Fixed GroupData objects to return new GroupData objects when sliced instead
  of _Group record objects.  See "Changes in behavior" above for more details.

- Fixed slicing of Group objects--previously it was not possible to slice
  slice them at all.

- Made it possible to assign `np.bool_` objects as header values. (#123)

- Fixed overly strict handling of the EXTEND keyword; see "Changes in
  behavior" above. (#124)

- Fixed many cases where an HDU's header would be marked as "modified" by
  PyFITS and rewritten, even when no changes to the header are necessary.
  (#125)

- Fixed a bug where the values of the PTYPEn keywords in a random groups HDU
  were forced to be all lower-case when saving the file. (#130)

- Removed an unnecessary inline import in `ExtensionHDU.__setattr__` that was
  causing some slowdown when opening files containing a large number of
  extensions, plus a few other small (but not insignficant) performance
  improvements thanks to Julian Taylor. (#133)

- Fixed a regression where header blocks containing invalid end-of-header
  padding (i.e. null bytes instead of spaces) couldn't be parsed by PyFITS.
  Such headers can be parsed again, but a warning is raised, as such headers
  are not valid FITS. (#136)

- Fixed a memory leak where table data in random groups HDUs weren't being
  garbage collected. (#138)


3.0.6 (2012-02-29)
------------------

Highlights
^^^^^^^^^^

The main reason for this release is to fix an issue that was introduced in
PyFITS 3.0.5 where merely opening a file containing scaled data (that is, with
non-trivial BSCALE and BZERO keywords) in 'update' mode would cause the data
to be automatically rescaled--possibly converting the data from ints to
floats--as soon as the file is closed, even if the application did not touch
the data.  Now PyFITS will only rescale the data in an extension when the data
is actually accessed by the application.  So opening a file in 'update' mode
in order to modify the header or append new extensions will not cause any
change to the data in existing extensions.

This release also fixes a few Windows-specific bugs found through more
extensive Windows testing, and other miscellaneous bugs.

Bug Fixes
^^^^^^^^^

- More accurate error messages when opening files containing invalid header
  cards. (#109)

- Fixed a possible reference cycle/memory leak that was caught through more
  extensive testing on Windows. (#112)

- Fixed 'ostream' mode to open the underlying file in 'wb' mode instead of 'w'
  mode. (#112)

- Fixed a Windows-only issue where trying to save updates to a resized FITS
  file could result in a crash due to there being open mmaps on that file.
  (#112)

- Fixed a crash when trying to create a FITS table (i.e. with new_table())
  from a Numpy array containing bool fields. (#113)

- Fixed a bug where manually initializing an ``HDUList`` with a list of of
  HDUs wouldn't set the correct EXTEND keyword value on the primary HDU.
  (#114)

- Fixed a crash that could occur when trying to deepcopy a Header in Python <
  2.7. (#115)

- Fixed an issue where merely opening a scaled image in 'update' mode would
  cause the data to be converted to floats when the file is closed. (#119)


3.0.5 (2012-01-30)
------------------

- Fixed a crash that could occur when accessing image sections of files
  opened with memmap=True. (r1211)

- Fixed the inconsistency in the behavior of files opened in 'readonly' mode
  when memmap=True vs. when memmap=False.  In the latter case, although
  changes to array data were not saved to disk, it was possible to update the
  array data in memory.  On the other hand with memmap=True, 'readonly' mode
  prevented even in-memory modification to the data.  This is what
  'copyonwrite' mode was for, but difference in behavior was confusing.  Now
  'readonly' is equivalent to 'copyonwrite' when using memmap.  If the old
  behavior of denying changes to the array data is necessary, a new
  'denywrite' mode may be used, though it is only applicable to files opened
  with memmap. (r1275)

- Fixed an issue where files opened with memmap=True would return image data
  as a raw numpy.memmap object, which can cause some unexpected
  behaviors--instead memmap object is viewed as a numpy.ndarray. (r1285)

- Fixed an issue in Python 3 where a workaround for a bug in Numpy on Python 3
  interacted badly with some other software, namely to vo.table package (and
  possibly others). (r1320, r1337, and #110)

- Fixed buggy behavior in the handling of SIGINTs (i.e. Ctrl-C keyboard
  interrupts) while flushing changes to a FITS file.  PyFITS already prevented
  SIGINTs from causing an incomplete flush, but did not clean up the signal
  handlers properly afterwards, or reraise the keyboard interrupt once the
  flush was complete. (r1321)

- Fixed a crash that could occur in Python 3 when opening files with checksum
  checking enabled. (r1336)

- Fixed a small bug that could cause a crash in the `StreamingHDU` interface
  when using Numpy below version 1.5.

- Fixed a crash that could occur when creating a new `CompImageHDU` from an
  array of big-endian data. (#104)

- Fixed a crash when opening a file with extra zero padding at the end.
  Though FITS files should not have such padding, it's not explictly forbidden
  by the format either, and PyFITS shouldn't stumble over it. (#106)

- Fixed a major slowdown in opening tables containing large columns of string
  values.  (#111)


3.0.4 (2011-11-22)
------------------

- Fixed a crash when writing HCOMPRESS compressed images that could happen on
  Python 2.5 and 2.6. (r1217)

- Fixed a crash when slicing an table in a file opened in 'readonly' mode with
  memmap=True. (r1230)

- Writing changes to a file or writing to a new file verifies the output in
  'fix' mode by default instead of 'exception'--that is, PyFITS will
  automatically fix common FITS format errors rather than raising an
  exception. (r1243)

- Fixed a bug where convenience functions such as getval() and getheader()
  crashed when specifying just 'PRIMARY' as the extension to use (r1263).

- Fixed a bug that prevented passing keyword arguments (beyond the standard
  data and header arguments) as positional arguments to the constructors of
  extension HDU classes.

- Fixed some tests that were failing on Windows--in this case the tests
  themselves failed to close some temp files and Windows refused to delete them
  while there were still open handles on them. (r1295)

- Fixed an issue with floating point formatting in header values on Python 2.5
  for Windows (and possibly other platforms).  The exponent was zero-padded to
  3 digits; although the FITS standard makes no specification on this, the
  formatting is now normalized to always pad the exponent to two digits.
  (r1295)

- Fixed a bug where long commentary cards (such as HISTORY and COMMENT) were
  broken into multiple CONTINUE cards.  However, commentary cards are not
  expected to be found in CONTINUE cards.  Instead these long cards are broken
  into multiple commentary cards. (#97)

- GZIP/ZIP-compressed FITS files can be detected and opened regardless of
  their filename extension. (#99)

- Fixed a serious bug where opening scaled images in 'update' mode and then
  closing the file without touching the data would cause the file to be
  corrupted. (#101)


3.0.3 (2011-10-05)
------------------

- Fixed several small bugs involving corner cases in record-valued keyword
  cards (#70)

- In some cases HDU creation failed if the first keyword value in the header
  was not a string value (#89)

- Fixed a crash when trying to compute the HDU checksum when the data array
  contains an odd number of bytes (#91)

- Disabled an unnecessary warning that was displayed on opening compressed
  HDUs with disable_image_compression = True (#92)

- Fixed a typo in code for handling HCOMPRESS compressed images.


3.0.2 (2011-09-23)
------------------

- The ``BinTableHDU.tcreate`` method and by extension the ``pyfits.tcreate``
  function don't get tripped up by blank lines anymore (#14)

- The presence, value, and position of the EXTEND keyword in Primary HDUs is
  verified when reading/writing a FITS file (#32)

- Improved documentation (in warning messages as well as in the handbook) that
  PyFITS uses zero-based indexing (as one would expect for C/Python code, but
  contrary to the PyFITS standard which was written with FORTRAN in mind)
  (#68)

- Fixed a bug where updating a header card comment could cause the value to be
  lost if it had not already been read from the card image string.

- Fixed a related bug where changes made directly to Card object in a header
  (i.e. assigning directly to card.value or card.comment) would not propagate
  when flushing changes to the file (#69) [Note: This and the bug above it
  were originally reported as being fixed in version 3.0.1, but the fix was
  never included in the release.]

- Improved file handling, particularly in Python 3 which had a few small file
  I/O-related bugs (#76)

- Fixed a bug where updating a FITS file would sometimes cause it to lose its
  original file permissions (#79)

- Fixed the handling of TDIMn keywords; 3.0 added support for them, but got
  the axis order backards (they were treated as though they were row-major)
  (#82)

- Fixed a crash when a FITS file containing scaled data is opened and
  immediately written to a new file without explicitly viewing the data first
  (#84)

- Fixed a bug where creating a table with columns named either 'names' or
  'formats' resulted in an infinite recursion (#86)


3.0.1 (2011-09-12)
------------------

- Fixed a bug where updating a header card comment could cause the value to be
  lost if it had not already been read from the card image string.

- Changed ``_TableBaseHDU.data`` so that if the data contain an empty table a
  ``FITS_rec`` object with zero rows is returned rather than ``None``.

- The ``.key`` attribute of ``RecordValuedKeywordCards`` now returns the full
  keyword+field-specifier value, instead of just the plain keyword (#46)

- Fixed a related bug where changes made directly to Card object in a header
  (i.e. assigning directly to card.value or card.comment) would not propagate
  when flushing changes to the file (#69)

- Fixed a bug where writing a table with zero rows could fail in some cases
  (#72)

- Miscellanous small bug fixes that were causing some tests to fail,
  particularly on Python 3 (#74, #75)

- Fixed a bug where creating a table column from an array in non-native byte
  order would not preserve the byte order, thus interpreting the column array
  using the wrong byte order (#77)


3.0.0 (2011-08-23)
--------------------

- Contains major changes, bumping the version to 3.0

- Large amounts of refactoring and reorganization of the code; tried to
  preserve public API backwards-compatibility with older versions (private API
  has many changes and is not guaranteed to be backwards-compatible).  There
  are a few small public API changes to be aware of:

  * The pyfits.rec module has been removed completely.  If your version of
    numpy does not have the numpy.core.records module it is too old to be used
    with PyFITS.

  * The ``Header.ascardlist()`` method is deprecated--use the ``.ascard``
    attribute instead.

  * ``Card`` instances have a new ``.cardimage`` attribute that should be used
    rather than ``.ascardimage()``, which may become deprecated.

  * The ``Card.fromstring()`` method is now a classmethod.  It returns a new
    ``Card`` instance rather than modifying an existing instance.

  * The ``req_cards()`` method on HDU instances has changed:  The ``pos``
    argument is not longer a string.  It is either an integer value (meaning
    the card's position must match that value) or it can be a function that
    takes the card's position as it's argument, and returns True if the
    position is valid.  Likewise, the ``test`` argument no longer takes a
    string, but instead a function that validates the card's value and returns
    True or False.

  * The ``get_coldefs()`` method of table HDUs is deprecated.  Use the
    ``.columns`` attribute instead.

  * The ``ColDefs.data`` attribute is deprecated--use ``ColDefs.columns``
    instead (though in general you shouldn't mess with it directly--it might
    become internal at some point).

  * ``FITS_record`` objects take ``start`` and ``end`` as arguments instead of
    ``startColumn`` and ``endColumn`` (these are rarely created manually, so
    it's unlikely that this change will affect anyone).

  * ``BinTableHDU.tcreate()`` is now a classmethod, and returns a new
    ``BinTableHDU`` instance.

  * Use ``ExtensionHDU`` and ``NonstandardExtHDU`` for making new extension HDU
    classes.  They are now public interfaces, wheres previously they were
    private and prefixed with underscores.

  * Possibly others--please report if you find any changes that cause
    difficulties.

- Calls to deprecated functions will display a Deprecation warning.  However,
  in Python 2.7 and up Deprecation warnings are ignored by default, so run
  Python with the `-Wd` option to see if you're using any deprecated
  functions.  If we get close to actually removing any functions, we might
  make the Deprecation warnings display by default.

- Added basic Python 3 support

- Added support for multi-dimensional columns in tables as specified by the
  TDIMn keywords (#47)

- Fixed a major memory leak that occurred when creating new tables with the
  ``new_table()`` function (#49)
  be padded with zero-bytes) vs ASCII tables (where strings are padded with
  spaces) (#15)

- Fixed a bug in which the case of Random Access Group parameters names was not
  preserved when writing (#41)

- Added support for binary table fields with zero width (#42)

- Added support for wider integer types in ASCII tables; although this is non-
  standard, some GEIS images require it (#45)

- Fixed a bug that caused the index_of() method of HDULists to crash when the
  HDUList object is created from scratch (#48)

- Fixed the behavior of string padding in binary tables (where strings should
  be padded with nulls instead of spaces)

- Fixed a rare issue that caused excessive memory usage when computing
  checksums using a non-standard block size (see r818)

- Add support for forced uint data in image sections (#53)

- Fixed an issue where variable-length array columns were not extended when
  creating a new table with more rows than the original (#54)

- Fixed tuple and list-based indexing of FITS_rec objects (#55)

- Fixed an issue where BZERO and BSCALE keywords were appended to headers in
  the wrong location (#56)

- ``FITS_record`` objects (table rows) have full slicing support, including
  stepping, etc. (#59)

- Fixed a bug where updating multiple files simultaneously (such as when
  running parallel processes) could lead to a race condition with mktemp()
  (#61)

- Fixed a bug where compressed image headers were not in the order expected by
  the funpack utility (#62)
89417a9
Jonathan Perkin jperkin referenced this issue from a commit
obache Update msgpack to 0.5.8.
2013-12-23 version 0.5.8:

  * Move to the new github repository msgpack/msgpack-c
  * Support the new deserialization specification
  * fixes the problem of unpack helpers for array and map with 32bit compilers (#37, #38)
  * Other bug fixes and refactoring: #46, #41, #36, #35, #33, #32, #30, #29, #28, #27, #26, #25, #8, #3
  * Update of documents: #23, #18, #17
16975cf
Jonathan Perkin jperkin referenced this issue from a commit
taca Update ruby-coderay to 1.0.8.
* add :string/:char, remove :regexp/:function color from Terminal encoder [GH
  #29, thanks to Kyrylo Silin]
* allow - in line number anchor prefix for HTML encoder [GH #32, thanks to
  shurizzle]
* Fix HTML scanner: Don��t crash if HTML in a diff contains a JavaScript tag.
613a608
Jonathan Perkin jperkin referenced this issue from a commit
asau Update to ABCL 1.2.1
Version 1.2.1
=============
http//abcl.org/svn/tags/abcl/1.2.1/CHANGES
27 June 2013
http://abcl.org/releases/1.2.1

*  Tested:  orcl-jdk-1.7.0_21 orcl-jdk-1.6.0_43

** ansi tests rc-2 failing 11-13 of 21708 total.
   Some regressions since 1.1.1

*  Stablility fixes; additional Quicklisp compatibility

** Fix (make-instance 'standard-generic-function)


Version 1.2.0
=============
http//abcl.org/svn/tags/1.2.0/abcl/CHANGES
released at ECLM 2013 Madrid, ES // 01 June 2013

   * Package local nicknames to behave like SBCL

   * ASDF 3.0.1 is now shipped with the implementation

   * a more robust MOP implementation

   * Common cases of creating purely synthetic JAVA:JNEW-RUNTIME-CLASS
     now (mostly) work.  Please report corner cases for fixing.

   * the system autoloader has been extended to cover functions bound to
     symbol properties

Issues Resolved
---------------

[#200]   ABCL compiler fails to produce loadable fasl for XPATH
[#321]   ASDF 3.01
[#256]   Compilation failure in com.informatimago
[#274]   compiling "com.informatimago.common-lisp.cesarum") hangs [> 10 minutes]
[#153]
 [#32]   Modify the currently disabled runtime-class.lisp code to not require ASM
[#152]   ql:closer-mop doesn't work
[#203]   Failure as build host for SBCL
[#300]   Gray streams aren't streams
[#302]   Symbols fail to autoload
[#303]   CL:LOAD ignores :EXTERNAL-FORMAT argument
[#304]   Stack abstraction inconsistency between Java and Lisp frames
[#308]   Compiled FLET exhausts the stack
[#309]   Printer should obey package-local nicknames
[#310]   Invocation of tests from from build.xml broken
[#311]   UIOP fails to upgrade
[#312]   BORDEAUX-THREADS-TEST::CONDITION-VARIABLE hangs
[#282]   Spurious macros redefinition warnings
1a8bf84
Jonathan Perkin jperkin referenced this issue from a commit
wen Update to 1.4
Upstream changes:
1.4 (2013-07-23)

BACKWARD INCOMPATIBLE pip now only installs stable versions by default, and offers a new --pre option to also find pre-release and development versions. (Pull #834)
BACKWARD INCOMPATIBLE Dropped support for Python 2.5. The minimum supported Python version for pip 1.4 is Python 2.6.
Added support for installing and building wheel archives. Thanks Daniel Holth, Marcus Smith, Paul Moore, and Michele Lacchia (Pull #845)
Applied security patch to pip's ssl support related to certificate DNS wildcard matching (http://bugs.python.org/issue17980).
To satisfy pip's setuptools requirement, pip now recommends setuptools>=0.8, not distribute. setuptools and distribute are now merged into one project called 'setuptools'. (Pull #1003)
pip will now warn when installing a file that is either hosted externally to the index or cannot be verified with a hash. In the future pip will default to not installing them and will require the flags -allow-external NAME, and -allow-insecure NAME respectively. (Pull #985)
If an already-downloaded or cached file has a bad hash, re-download it rather than erroring out. (Issue #963).
pip bundle and support for installing from pybundle files is now considered deprecated and will be removed in pip v1.5.
Fixed a number of issues (#413, #709, #634, #602, and #939) related to cleaning up and not reusing build directories. (Pull #865, #948)
Added a User Agent so that pip is identifiable in logs. (Pull #901)
Added ssl and -user support to get-pip.py. Thanks Gabriel de Perthuis. (Pull #895)
Fixed the proxy support, which was broken in pip 1.3.x (Pull #840)
Fixed issue #32 - pip fails when server does not send content-type header. Thanks Hugo Lopes Tavares and Kelsey Hightower (Pull #872).
"Vendorized" distlib as pip.vendor.distlib (https://distlib.readthedocs.org/).
Fixed git VCS backend with git 1.8.3. (Pull #967)
7a0ed6e
Jonathan Perkin jperkin referenced this issue from a commit
obache Update ruby-multipart-post to 2.0.0.
=== 2.0.0 / 2013-12-21

- Drop Ruby 1.8 compatibility
- GH #21: Fix FilePart length calculation for Ruby 1.9 when filename contains
  multibyte characters (hexfet)
- GH #20: Ensure upload responds to both #content_type and #original_filename
  (Steven Davidovitz)
- GH #31: Support setting headers on any part of the request (Socrates Vicente)
- GH #30: Support array values for params (Gustav Ernberg)
- GH #32: Fix respond_to? signature (Leo Cassarani)
- GH #33: Update README to markdown (Jagtesh Chadha)
- GH #35: Improved handling of array-type parameters (Steffen Grunwald)
450823a
Jonathan Perkin jperkin referenced this issue from a commit
wiz Import py27-fits-3.2 as graphics/py-fits.
FITS (Flexible Image Transport System) is a data format most used in astronomy.
PyFITS is a Python module for reading, writing, and manipulating FITS files.
The module uses Python's object-oriented features to provide quick, easy, and
efficient access to FITS files. The use of Python's array syntax enables
immediate access to any FITS extension, header cards, or data items.

Changes to 2.4.0 (in py-pyfits):

Changelog
===========

3.2 (2013-11-26)
----------------

Highlights
^^^^^^^^^^

- Rewrote CFITSIO-based backend for handling tile compression of FITS files.
  It now uses a standard CFITSIO instead of heavily modified pieces of CFITSIO
  as before.  PyFITS ships with its own copy of CFITSIO v3.35 which supports
  the latest version of the Tiled Image Convention (v2.3), but system
  packagers may choose instead to strip this out in favor of a
  system-installed version of CFITSIO.  Earlier versions may work, but nothing
  earlier than 3.28 has been tested yet. (#169)

- Added support for reading and writing tables using the Q format for columns.
  The Q format is identical to the P format (variable-length arrays) except
  that it uses 64-bit integers for the data descriptors, allowing more than
  4 GB of variable-length array data in a single table. (#160)

- Added initial support for table columns containing pseudo-unsigned integers.
  This is currently enabled by using the ``uint=True`` option when opening
  files; any table columns with the correct BZERO value will be interpreted
  and returned as arrays of unsigned integers.

- Some refactoring of the table and ``FITS_rec`` modules in order to better
  separate the details of the FITS binary and ASCII table data structures from
  the HDU data structures that encapsulate them.  Most of these changes should
  not be apparent to users (but see API Changes below).


API Changes
^^^^^^^^^^^

- Assigning to values in ``ColDefs.names``, ``ColDefs.formats``,
  ``ColDefs.nulls`` and other attributes of ``ColDefs`` instances that return
  lists of column properties is no longer supported.  Assigning to those lists
  will no longer update the corresponding columns.  Instead, please just
  modify the ``Column`` instances directly (``Column.name``, ``Column.null``,
  etc.)

- The ``pyfits.new_table`` function is marked "pending deprecation".  This
  does not mean it will be removed outright or that its functionality has
  changed.  It will likely be replaced in the future for a function with
  similar, if not subtly different functionality.  A better, if not slightly
  more verbose approach is to use ``pyfits.FITS_rec.from_columns`` to create
  a new ``FITS_rec`` table--this has the same interface as
  ``pyfits.new_table``.  The difference is that it returns a plan ``FITS_rec``
  array, and not an HDU instance.  This ``FITS_rec`` object can then be used
  as the data argument in the constructors for ``BinTableHDU`` (for binary
  tables) or ``TableHDU`` (for ASCII tables).  This is analogous to creating
  an ``ImageHDU`` by passing in an image array.
  ``pyfits.FITS_rec.from_columns`` is just a simpler way of creating a
  FITS-compatible recarray from a FITS column specification.

- The ``updateHeader``, ``updateHeaderData``, and ``updateCompressedData``
  methods of the ``CompDataHDU`` class are pending deprecation and moved to
  internal methods.  The operation of these methods depended too much on
  internal state to be used safely by users; instead they are invoked
  automatically in the appropriate places when reading/writing compressed image
  HDUs.

- The ``CompDataHDU.compData`` attribute is pending deprecation in favor of
  the clearer and more PEP-8 compatible ``CompDataHDU.compressed_data``.

- The constructor for ``CompDataHDU`` has been changed to accept new keyword
  arguments.  The new keyword arguments are essentially the same, but are in
  underscore_separated format rather than camelCase format.  The old arguments
  are still pending deprecation.

- The internal attributes of HDU classes ``_hdrLoc``, ``_datLoc``, and
  ``_datSpan`` have been replaced with ``_header_offset``, ``_data_offset``,
  and ``_data_size`` respectively.  The old attribute names are still pending
  deprecation.  This should only be of interest to advanced users who have
  created their own HDU subclasses.

- The following previously deprecated functions and methods have been removed
  entirely: ``createCard``, ``createCardFromString``, ``upperKey``,
  ``ColDefs.data``, ``setExtensionNameCaseSensitive``, ``_File.getfile``,
  ``_TableBaseHDU.get_coldefs``, ``Header.has_key``, ``Header.ascardlist``.

  If you run your code with a previous version of PyFITS (>= 3.0, < 3.2) with
  the ``python -Wd`` argument, warnings for all deprecated interfaces still in
  use will be displayed.

- Interfaces that were pending deprecation are now fully deprecated.  These
  include: ``create_card``, ``create_card_from_string``, ``upper_key``,
  ``Header.get_history``, and ``Header.get_comment``.

- The ``.name`` attribute on HDUs is now directly tied to the HDU's header, so
  that if ``.header['EXTNAME']`` changes so does ``.name`` and vice-versa.

- The ``pyfits.file.PYTHON_MODES`` constant dict was renamed to
  ``pyfits.file.PYFITS_MODES`` which better reflects its purpose.  This is
  rarely used by client code, however.  Support for the old name will be
  removed by PyFITS 3.4.


Other Changes and Additions
^^^^^^^^^^^^^^^^^^^^^^^^^^^

- The new compression code also adds support for the ZQUANTIZ and ZDITHER0
  keywords added in more recent versions of this FITS Tile Compression spec.
  This includes support for lossless compression with GZIP. (#198) By default
  no dithering is used, but the ``SUBTRACTIVE_DITHER_1`` and
  ``SUBTRACTIVE_DITHER_2`` methods can be enabled by passing the correct
  constants to the ``quantize_method`` argument to the ``CompImageHDU``
  constuctor.  A seed can be manually specified, or automatically generated
  using either the system clock or checksum-based methods via the
  ``dither_seed`` argument.  See the documentation for ``CompImageHDU`` for
  more details. (#198) (spacetelescope/PYFITS#32)

- Images compressed with the Tile Compression standard can now be larger than
  4 GB through support of the Q format. (#159)

- All HDUs now have a ``.ver`` ``.level`` attribute that returns the value of
  the EXTVAL and EXTLEVEL keywords from that HDU's header, if the exist.  This
  was added for consistency with the ``.name`` attribute which returns the
  EXTNAME value from the header.

- Then ``Column`` and ``ColDefs`` classes have new ``.dtype`` attributes
  which give the Numpy dtype for the column data in the first case, and the
  full Numpy compound dtype for each table row in the latter case.

- There was an issue where new tables created defaulted the values in all
  string columns to '0.0'.  Now string columns are filled with empty strings
  by default--this seems a less surprising default, but it may cause
  differences with tables created with older versions of PyFITS.

- Improved round-tripping and preservation of manually assigned column
  attributes (``TNULLn``, ``TSCALn``, etc.) in table HDU headers.
  (astropy/astropy#996)


Bug Fixes
^^^^^^^^^

- Binary tables containing compressed images may, optionally, contain other
  columns unrelated to the tile compression convention. Although this is an
  uncommon use case, it is permitted by the standard. (#159)

- Reworked some of the file I/O routines to allow simpler, more consistent
  mapping between OS-level file modes ('rb', 'wb', 'ab', etc.) and the more
  "PyFITS-specific" modes used by PyFITS like "readonly" and "update".
  That is, if reading a FITS file from an open file object, it doesn't matter
  as much what "mode" it was opened in so long as it has the right
  capabilities (read/write/etc.)  Also works around bugs in the Python io
  module in 2.6+ with regard to file modes. (spacetelescope/PyFITS#33)

- Fixed an obscure issue that can occur on systems that don't have flush to
  memory-mapped files implemented (namely GNU Hurd). (astropy/astropy#968)


3.1.3 (2013-11-26)
------------------

- Disallowed assigning NaN and Inf floating point values as header values,
  since the FITS standard does not define a way to represent them in. Because
  this is undefined, the previous behavior did not make sense and produced
  invalid FITS files. (spacetelescope/PyFITS#11)

- Added a workaround for a bug in 64-bit OSX that could cause truncation when
  writing files greater than 2^32 bytes in size. (spacetelescope/PyFITS#28)

- Fixed a long-standing issue where writing binary tables did not correctly
  write the TFORMn keywords for variable-length array columns (they ommitted
  the max array length parameter of the format).  This was thought fixed in
  v3.1.2, but it was only fixed there for compressed image HDUs and not for
  binary tables in general.

- Fixed an obscure issue that can occur on systems that don't have flush to
  memory-mapped files implemented (namely GNU Hurd). (Backported from 3.2)


3.0.12 (2013-11-26)
-------------------

- Disallowed assigning NaN and Inf floating point values as header values,
  since the FITS standard does not define a way to represent them in. Because
  this is undefined, the previous behavior did not make sense and produced
  invalid FITS files. (Backported from 3.1.3)

- Added a workaround for a bug in 64-bit OSX that could cause truncation when
  writing files greater than 2^32 bytes in size. (Backported from 3.1.3)

- Fixed a long-standing issue where writing binary tables did not correctly
  write the TFORMn keywords for variable-length array columns (they ommitted
  the max array length parameter of the format).  This was thought fixed in
  v3.1.2, but it was only fixed there for compressed image HDUs and not for
  binary tables in general. (Backported from 3.1.3)

- Fixed an obscure issue that can occur on systems that don't have flush to
  memory-mapped files implemented (namely GNU Hurd). (Backported from 3.2)


3.1.2 (2013-04-22)
------------------

- When an error occurs opening a file in fitsdiff the exception message will
  now at least mention which file had the error. (#168)

- Fixed support for opening gzipped FITS files by filename in a writeable mode
  (PyFITS has supported writing to gzip files for some time now, but only
  enabled it when GzipFile objects were passed to ``pyfits.open()`` due to
  some legacy code preventing full gzip support. (#195)

- Added a more helpful error message in the case of malformatted FITS files
  that contain non-float NULL values in an ASCII table but are missing the
  required TNULLn keywords in the header. (#197)

- Fixed an (apparently long-standing) issue where writing compressed images
  did not correctly write the TFORMn keywords for variable-length array
  columns (they ommitted the max array length parameter of the format). (#199)

- Slightly refactored how tables containing variable-length array columns are
  handled to add two improvements: Fixes an issue where accessing the data
  after a call to the `pyfits.getdata` convenience function caused an
  exception, and allows the VLA data to be read from an existing mmap of the
  FITS file. (#200)

- Fixed a bug that could occur when opening a table containing
  multi-dimensional columns (i.e. via the TDIMn keyword) and then writing it
  out to a new file. (#201)

- Added use of the console_scripts entry point to install the fitsdiff and
  fitscheck scripts, which if nothing else provides better Windows support.
  The generated scripts now override the ones explicitly defined in the
  scripts/ directory (which were just trivial stubs to begin with). (#202)

- Fixed a bug on Python 3 where attempting to open a non-existent file on
  Python 3 caused a seemingly unrelated traceback. (#203)

- Fixed a bug in fitsdiff that reported two header keywords containing NaN
  as value as different. (#204)

- Fixed an issue in the tests that caused some tests to fail if pyfits is
  installed with read-only permissions. (#208)

- Fixed a bug where instantiating a ``BinTableHDU`` from a numpy array
  containing boolean fields converted all the values to ``False``. (#215)

- Fixed an issue where passing an array of integers into the constructor of
  ``Column()`` when the column type is floats of the same byte width caused the
  column array to become garbled. (#218)

- Fixed inconsistent behavior in creating CONTINUE cards from byte strings
  versus unicode strings in Python 2--CONTINUE cards can now be created
  properly from unicode strings (so long as they are convertable to ASCII).
  (spacetelescope/PyFITS#1)

- Fixed a couple cases where creating a new table using TDIMn in some of the
  columns could caused a crash. (spacetelescope/PyFITS#3)

- Fixed a bug in parsing HIERARCH keywords that do not have a space after
  the first equals sign (before the value). (spacetelescope/PyFITS#5)

- Prevented extra leading whitespace on HIERARCH keywords from being treated
  as part of the keyword. (spacetelescope/PyFITS#6)

- Fixed a bug where HIERARCH keywords containing lower-case letters was
  mistakenly marked as invalid during header validation.
  (spacetelescope/PyFITS#7)

- Fixed an issue that was ancillary to (spacetelescope/PyFITS#7) where the
  ``Header.index()`` method did not work correctly with HIERARCH keywords
  containing lower-case letters.


3.0.11 (2013-04-17)
-------------------

- Fixed support for opening gzipped FITS files by filename in a writeable mode
  (PyFITS has supported writing to gzip files for some time now, but only
  enabled it when GzipFile objects were passed to ``pyfits.open()`` due to
  some legacy code preventing full gzip support. Backported from 3.1.2. (#195)

- Added a more helpful error message in the case of malformatted FITS files
  that contain non-float NULL values in an ASCII table but are missing the
  required TNULLn keywords in the header. Backported from 3.1.2. (#197)

- Fixed an (apparently long-standing) issue where writing compressed images did
  not correctly write the TFORMn keywords for variable-length array columns
  (they ommitted the max array length parameter of the format). Backported from
  3.1.2. (#199)

- Slightly refactored how tables containing variable-length array columns are
  handled to add two improvements: Fixes an issue where accessing the data
  after a call to the `pyfits.getdata` convenience function caused an
  exception, and allows the VLA data to be read from an existing mmap of the
  FITS file. Backported from 3.1.2. (#200)

- Fixed a bug that could occur when opening a table containing
  multi-dimensional columns (i.e. via the TDIMn keyword) and then writing it
  out to a new file. Backported from 3.1.2. (#201)

- Fixed a bug on Python 3 where attempting to open a non-existent file on
  Python 3 caused a seemingly unrelated traceback. Backported from 3.1.2.
  (#203)

- Fixed a bug in fitsdiff that reported two header keywords containing NaN
  as value as different. Backported from 3.1.2. (#204)

- Fixed an issue in the tests that caused some tests to fail if pyfits is
  installed with read-only permissions. Backported from 3.1.2. (#208)

- Fixed a bug where instantiating a ``BinTableHDU`` from a numpy array
  containing boolean fields converted all the values to ``False``. Backported
  from 3.1.2. (#215)

- Fixed an issue where passing an array of integers into the constructor of
  ``Column()`` when the column type is floats of the same byte width caused the
  column array to become garbled. Backported from 3.1.2. (#218)

- Fixed a couple cases where creating a new table using TDIMn in some of the
  columns could caused a crash. Backported from 3.1.2.
  (spacetelescope/PyFITS#3)


3.1.1 (2013-01-02)
------------------

This is a bug fix release for the 3.1.x series.

Bug Fixes
^^^^^^^^^

- Improved handling of scaled images and pseudo-unsigned integer images in
  compressed image HDUs.  They now work more transparently like normal image
  HDUs with support for the ``do_not_scale_image_data`` and ``uint`` options,
  as well as ``scale_back`` and ``save_backup``.  The ``.scale()`` method
  works better too. (#88)

- Permits non-string values for the EXTNAME keyword when reading in a file,
  rather than throwing an exception due to the malformatting.  Added
  verification for the format of the EXTNAME keyword when writing. (#96)

- Added support for EXTNAME and EXTVER in PRIMARY HDUs.  That is, if EXTNAME
  is specified in the header, it will also be reflected in the ``.name``
  attribute and in ``pyfits.info()``.  These keywords used to be verboten in
  PRIMARY HDUs, but the latest version of the FITS standard allows them.
  (#151)

- HCOMPRESS can again be used to compress data cubes (and higher-dimensional
  arrays) so long as the tile size is effectively 2-dimensional. In fact,
  PyFITS will automatically use compatible tile sizes even if they're not
  explicitly specified. (#171)

- Added support for the optional ``endcard`` parameter in the
  ``Header.fromtextfile()`` and ``Header.totextfile()`` methods.  Although
  ``endcard=False`` was a reasonable default assumption, there are still text
  dumps of FITS headers that include the END card, so this should have been
  more flexible. (#176)

- Fixed a crash when running fitsdiff on two empty (that is, zero row) tables.
  (#178)

- Fixed an issue where opening files containing random groups HDUs in update
  mode could cause an unnecessary rewrite of the file even if none of the
  data is modified. (#179)

- Fixed a bug that could caused a deadlock in the filesystem on OSX if PyFITS
  is used with Numpy 1.7 in some cases. (#180)

- Fixed a crash when generating diff reports from diffs using the
  ``ignore_comments`` options. (#181)

- Fixed some bugs with WCS Paper IV record-valued keyword cards:

  - Cards that looked kind of like RVKCs but were not intended to be were
    over-permissively treated as such--commentary keywords like COMMENT and
    HISTORY were particularly affected. (#183)

  - Looking up a card in a header by its standard FITS keyword only should
    always return the raw value of that card.  That way cards containing
    values that happen to valid RVKCs but were not intended to be will still
    be treated like normal cards. (#184)

  - Looking up a RVKC in a header with only part of the field-specifier (for
    example "DP1.AXIS" instead of "DP1.AXIS.1") was implicitly treated as a
    wildcard lookup. (#184)

- Fixed a crash when diffing two FITS files where at least one contains a
  compressed image HDU which was not recognized as an image instead of a
  table. (#187)

- Fixed bugs in the backwards compatibility layer for the ``CardList.index``
  and ``CardList.count`` methods. (#190)

- Improved ``__repr__`` and text file representation of cards with long values
  that are split into CONTINUE cards. (#193)

- Fixed a crash when trying to assign a long (> 72 character) value to blank
  ('') keywords. This also changed how blank keywords are represented--there
  are still exactly 8 spaces before any commentary content can begin; this
  *may* affect the exact display of header cards that assumed there could be
  fewer spaces in a blank keyword card before the content begins. However, the
  current approach is more in line with the requirements of the FITS standard.
  (#194)


3.0.10 (2013-01-02)
-------------------

- Improved handling of scaled images and pseudo-unsigned integer images in
  compressed image HDUs.  They now work more transparently like normal image
  HDUs with support for the ``do_not_scale_image_data`` and ``uint`` options,
  as well as ``scale_back`` and ``save_backup``.  The ``.scale()`` method
  works better too.  Backported from 3.1.1. (#88)

- Permits non-string values for the EXTNAME keyword when reading in a file,
  rather than throwing an exception due to the malformatting.  Added
  verification for the format of the EXTNAME keyword when writing.  Backported
  from 3.1.1. (#96)

- Added support for EXTNAME and EXTVER in PRIMARY HDUs.  That is, if EXTNAME
  is specified in the header, it will also be reflected in the ``.name``
  attribute and in ``pyfits.info()``.  These keywords used to be verbotten in
  PRIMARY HDUs, but the latest version of the FITS standard allows them.
  Backported from 3.1.1. (#151)

- HCOMPRESS can again be used to compress data cubes (and higher-dimensional
  arrays) so long as the tile size is effectively 2-dimensional. In fact,
  PyFITS will not automatically use compatible tile sizes even if they're not
  explicitly specified.  Backported from 3.1.1. (#171)

- Fixed a bug when writing out files containing zero-width table columns,
  where the TFIELDS keyword would be updated incorrectly, leaving the table
  largely unreadable.  Backported from 3.1.0. (#174)

- Fixed an issue where opening files containing random groups HDUs in update
  mode could cause an unnecessary rewrite of the file even if none of the
  data is modified.  Backported from 3.1.1. (#179)

- Fixed a bug that could caused a deadlock in the filesystem on OSX if PyFITS
  is used with Numpy 1.7 in some cases. Backported from 3.1.1. (#180)


3.1 (2012-08-08)
----------------

Highlights
^^^^^^^^^^

- The ``Header`` object has been significantly reworked, and ``CardList``
  objects are now deprecated (their functionality folded into the ``Header``
  class).  See API Changes below for more details.

- Memory maps are now used by default to access HDU data.  See API Changes
  below for more details.

- Now includes a new version of the ``fitsdiff`` program for comparing two
  FITS files, and a new FITS comparison API used by ``fitsdiff``.  See New
  Features below.

API Changes
^^^^^^^^^^^

- The ``Header`` class has been rewritten, and the ``CardList`` class is
  deprecated.  Most of the basic details of working with FITS headers are
  unchanged, and will not be noticed by most users.  But there are differences
  in some areas that will be of interest to advanced users, and to application
  developers.  For full details of the changes, see the "Header Interface
  Transition Guide" section in the PyFITS documentation.  See ticket #64 on
  the PyFITS Trac for futher details and background. Some highlights are
  listed below:

  * The Header class now fully implements the Python dict interface, and can
    be used interchangably with a dict, where the keys are header keywords.

  * New keywords can be added to the header using normal keyword assignment
    (previously it was necessary to use ``Header.update`` to add new
    keywords).  For example::

        >>> header['NAXIS'] = 2

    will update the existing 'FOO' keyword if it already exists, or add a new
    one if it doesn't exist, just like a dict.

  * It is possible to assign both a value and a comment at the same time using
    a tuple::

        >>> header['NAXIS'] = (2, 'Number of axes')

  * To add/update a new card and ensure it's added in a specific location, use
    ``Header.set()``::

        >>> header.set('NAXIS', 2, 'Number of axes', after='BITPIX')

    This works the same as the old ``Header.update()``.  ``Header.update()``
    still works in the old way too, but is deprecated.

  * Although ``Card`` objects still exist, it generally is not necessary to
    work with them directly.  ``Header.ascardlist()``/``Header.ascard`` are
    deprecated and should not be used.  To directly access the ``Card``
    objects in a header, use ``Header.cards``.

  * To access card comments, it is still possible to either go through the
    card itself, or through ``Header.comments``.  For example::

       >>> header.cards['NAXIS'].comment
       Number of axes
       >>> header.comments['NAXIS']
       Number of axes

  * ``Card`` objects can now be used interchangeably with
    ``(keyword, value, comment)`` 3-tuples.  They still have ``.value`` and
    ``.comment`` attributes as well.  The ``.key`` attribute has been renamed
    to ``.keyword`` for consistency, though ``.key`` is still supported (but
    deprecated).

- Memory mapping is now used by default to access HDU data.  That is,
  ``pyfits.open()`` uses ``memmap=True`` as the default.  This provides better
  performance in the majority of use cases--there are only some I/O intensive
  applications where it might not be desirable.  Enabling mmap by default also
  enabled finding and fixing a large number of bugs in PyFITS' handling of
  memory-mapped data (most of these bug fixes were backported to PyFITS
  3.0.5). (#85)

  * A new ``pyfits.USE_MEMMAP`` global variable was added.  Set
    ``pyfits.USE_MEMMAP = False`` to change the default memmap setting for
    opening files.  This is especially useful for controlling the behavior in
    applications where pyfits is deeply embedded.

  * Likewise, a new ``PYFITS_USE_MEMMAP`` environment variable is supported.
    Set ``PYFITS_USE_MEMMAP = 0`` in your environment to change the default
    behavior.

- The ``size()`` method on HDU objects is now a ``.size`` property--this
  returns the size in bytes of the data portion of the HDU, and in most cases
  is equivalent to ``hdu.data.nbytes`` (#83)

- ``BinTableHDU.tdump`` and ``BinTableHDU.tcreate`` are deprecated--use
  ``BinTableHDU.dump`` and ``BinTableHDU.load`` instead.  The new methods
  output the table data in a slightly different format from previous versions,
  which places quotes around each value.  This format is compatible with data
  dumps from previous versions of PyFITS, but not vice-versa due to a parsing
  bug in older versions.

- Likewise the ``pyfits.tdump`` and ``pyfits.tcreate`` convenience function
  versions of these methods have been renamed ``pyfits.tabledump`` and
  ``pyfits.tableload``.  The old deprecated, but currently retained for
  backwards compatibility. (r1125)

- A new global variable ``pyfits.EXTENSION_NAME_CASE_SENSITIVE`` was added.
  This serves as a replacement for ``pyfits.setExtensionNameCaseSensitive``
  which is not deprecated and may be removed in a future version.  To enable
  case-sensitivity of extension names (i.e. treat 'sci' as distict from 'SCI')
  set ``pyfits.EXTENSION_NAME_CASE_SENSITIVE = True``.  The default is
  ``False``. (r1139)

- A new global configuration variable ``pyfits.STRIP_HEADER_WHITESPACE`` was
  added.  By default, if a string value in a header contains trailing
  whitespace, that whitespace is automatically removed when the value is read.
  Now if you set ``pyfits.STRIP_HEADER_WHITESPACE = False`` all whitespace is
  preserved. (#146)

- The old ``classExtensions`` extension mechanism (which was deprecated in
  PyFITS 3.0) is removed outright.  To our knowledge it was no longer used
  anywhere. (r1309)

- Warning messages from PyFITS issued through the Python warnings API are now
  output to stderr instead of stdout, as is the default.  PyFITS no longer
  modifies the default behavior of the warnings module with respect to which
  stream it outputs to. (r1319)

- The ``checksum`` argument to ``pyfits.open()`` now accepts a value of
  'remove', which causes any existing CHECKSUM/DATASUM keywords to be ignored,
  and removed when the file is saved.

New Features
^^^^^^^^^^^^

- Added support for the proposed "FITS" extension HDU type.  See
  http://listmgr.cv.nrao.edu/pipermail/fitsbits/2002-April/001094.html.  FITS
  HDUs contain an entire FITS file embedded in their data section.  `FitsHDU`
  objects work like other HDU types in PyFITS.  Their ``.data`` attribute
  returns the raw data array.  However, they have a special ``.hdulist``
  attribute which processes the data as a FITS file and returns it as an
  in-memory HDUList object.  FitsHDU objects also support a
  ``FitsHDU.fromhdulist()`` classmethod which returns a new `FitsHDU` object
  that embeds the supplied HDUList. (#80)

- Added a new ``.is_image`` attribute on HDU objects, which is True if the HDU
  data is an 'image' as opposed to a table or something else.  Here the
  meaning of 'image' is fairly loose, and mostly just means a Primary or Image
  extension HDU, or possibly a compressed image HDU (#71)

- Added an ``HDUList.fromstring`` classmethod which can parse a FITS file
  already in memory and instantiate and ``HDUList`` object from it.  This
  could be useful for integrating PyFITS with other libraries that work on
  FITS file, such as CFITSIO.  It may also be useful in streaming
  applications.  The name is a slight misnomer, in that it actually accepts
  any Python object that implements the buffer interface, which includes
  ``bytes``, ``bytearray``, ``memoryview``, ``numpy.ndarray``, etc. (#90)

- Added a new ``pyfits.diff`` module which contains facilities for comparing
  FITS files.  One can use the ``pyfits.diff.FITSDiff`` class to compare two
  FITS files in their entirety.  There is also a ``pyfits.diff.HeaderDiff``
  class for just comparing two FITS headers, and other similar interfaces.
  See the PyFITS Documentation for more details on this interface.  The
  ``pyfits.diff`` module powers the new ``fitsdiff`` program installed with
  PyFITS.  After installing PyFITS, run ``fitsdiff --help`` for usage details.

- ``pyfits.open()`` now accepts a ``scale_back`` argument.  If set to
  ``True``, this automatically scales the data using the original BZERO and
  BSCALE parameters the file had when it was first opened, if any, as well as
  the original BITPIX.  For example, if the original BITPIX were 16, this
  would be equivalent to calling ``hdu.scale('int16', 'old')`` just before
  calling ``flush()`` or ``close()`` on the file.  This option applies to all
  HDUs in the file. (#120)

- ``pyfits.open()`` now accepts a ``save_backup`` argument.  If set to
  ``True``, this automatically saves a backup of the original file before
  flushing any changes to it (this of course only applies to update and append
  mode).  This may be especially useful when working with scaled image data.
  (#121)

Changes in Behavior
^^^^^^^^^^^^^^^^^^^

- Warnings from PyFITS are not output to stderr by default, instead of stdout
  as it has been for some time.  This is contrary to most users' expectations
  and makes it more difficult for them to separate output from PyFITS from the
  desired output for their scripts. (r1319)

Bug Fixes
^^^^^^^^^

- Fixed ``pyfits.tcreate()`` (now ``pyfits.tableload()``) to be more robust
  when encountering blank lines in a column definition file (#14)

- Fixed a fairly rare crash that could occur in the handling of CONTINUE cards
  when using Numpy 1.4 or lower (though 1.4 is the oldest version supported by
  PyFITS). (r1330)

- Fixed ``_BaseHDU.fromstring`` to actually correctly instantiate an HDU
  object from a string/buffer containing the header and data of that HDU.
  This allowed for the implementation of ``HDUList.fromstring`` described
  above. (#90)

- Fixed a rare corner case where, in some use cases, (mildly, recoverably)
  malformatted float values in headers were not properly returned as floats.
  (#137)

- Fixed a corollary to the previous bug where float values with a leading zero
  before the decimal point had the leading zero unnecessarily removed when
  saving changes to the file (eg. "0.001" would be written back as ".001" even
  if no changes were otherwise made to the file). (#137)

- When opening a file containing CHECKSUM and/or DATASUM keywords in update
  mode, the CHECKSUM/DATASUM are updated and preserved even if the file was
  opened with checksum=False.  This change in behavior prevents checksums from
  being unintentionally removed. (#148)

- Fixed a bug where ``ImageHDU.scale(option='old')`` wasn't working at all--it
  was not restoring the image to its original BSCALE and BZERO values. (#162)

- Fixed a bug when writing out files containing zero-width table columns,
  where the TFIELDS keyword would be updated incorrectly, leaving the table
  largely unreadable.  This fix will be backported to the 3.0.x series in
  version 3.0.10.  (#174)


3.0.9 (2012-08-06)
------------------

This is a bug fix release for the 3.0.x series.

Bug Fixes
^^^^^^^^^

- Fixed ``Header.values()``/``Header.itervalues()`` and ``Header.items()``/
  ``Header.iteritems()`` to correctly return the different values for
  duplicate keywords (particularly commentary keywords like HISTORY and
  COMMENT).  This makes the old Header implementation slightly more compatible
  with the new implementation in PyFITS 3.1. (#127)

  .. note::
      This fix did not change the existing behavior from earlier PyFITS
      versions where ``Header.keys()`` returns all keywords in the header with
      duplicates removed.  PyFITS 3.1 changes that behavior, so that
      ``Header.keys()`` includes duplicates.

- Fixed a bug where ``ImageHDU.scale(option='old')`` wasn't working at all--it
  was not restoring the image to its original BSCALE and BZERO values. (#162)

- Fixed a bug where opening a file containing compressed image HDUs in
  'update' mode and then immediately closing it without making any changes
  caused the file to be rewritten unncessarily. (#167)

- Fixed two memory leaks that could occur when writing compressed image data,
  or in some cases when opening files containing compressed image HDUs in
  'update' mode. (#168)


3.0.8 (2012-06-04)
------------------

Changes in Behavior
^^^^^^^^^^^^^^^^^^^

- Prior to this release, image data sections did not work with scaled
  data--that is, images with non-trivial BSCALE and/or BZERO values.
  Previously, in order to read such images in sections, it was necessary to
  manually apply the BSCALE+BZERO to each section.  It's worth noting that
  sections *did* support pseudo-unsigned ints (flakily).  This change just
  extends that support for general BSCALE+BZERO values.

Bug Fixes
^^^^^^^^^

- Fixed a bug that prevented updates to values in boolean table columns from
  being saved.  This turned out to be a symptom of a deeper problem that could
  prevent other table updates from being saved as well. (#139)

- Fixed a corner case in which a keyword comment ending with the string "END"
  could, in some circumstances, cause headers (and the rest of the file after
  that point) to be misread. (#142)

- Fixed support for scaled image data and psuedo-unsigned ints in image data
  sections (``hdu.section``).  Previously this was not supported at all.  At
  some point support was supposedly added, but it was buggy and incomplete.
  Now the feature seems to work much better. (#143)

- Fixed the documentation to point out that image data sections *do* support
  non-contiguous slices (and have for a long time).  The documentation was
  never updated to reflect this, and misinformed users that only contiguous
  slices were supported, leading to some confusion. (#144)

- Fixed a bug where creating an ``HDUList`` object containing multiple PRIMARY
  HDUs caused an infinite recursion when validating the object prior to
  writing to a file. (#145)

- Fixed a rare but serious case where saving an update to a file that
  previously had a CHECKSUM and/or DATASUM keyword, but removed the checksum
  in saving, could cause the file to be slightly corrupted and unreadable.
  (#147)

- Fixed problems with reading "non-standard" FITS files with primary headers
  containing SIMPLE = F.  PyFITS has never made many guarantees as to how such
  files are handled.  But it should at least be possible to read their
  headers, and the data if possible.  Saving changes to such a file should not
  try to prepend an unwanted valid PRIMARY HDU. (#157)

- Fixed a bug where opening an image with ``disable_image_compression = True``
  caused compression to be disabled for all subsequent ``pyfits.open()`` calls.
  (r1651)


3.0.7 (2012-04-10)
------------------

Changes in Behavior
^^^^^^^^^^^^^^^^^^^

- Slices of GroupData objects now return new GroupData objects instead of
  extended multi-row _Group objects. This is analogous to how PyFITS 3.0 fixed
  FITS_rec slicing, and should have been fixed for GroupData at the same time.
  The old behavior caused bugs where functions internal to Numpy expected that
  slicing an ndarray would return a new ndarray.  As this is a rare usecase
  with a rare feature most users are unlikely to be affected by this change.

- The previously internal _Group object for representing individual group
  records in a GroupData object are renamed Group and are now a public
  interface.  However, there's almost no good reason to create Group objects
  directly, so it shouldn't be considered a "new feature".

- An annoyance from PyFITS 3.0.6 was fixed, where the value of the EXTEND
  keyword was always being set to F if there are not actually any extension
  HDUs.  It was unnecessary to modify this value.

Bug Fixes
^^^^^^^^^

- Fixed GroupData objects to return new GroupData objects when sliced instead
  of _Group record objects.  See "Changes in behavior" above for more details.

- Fixed slicing of Group objects--previously it was not possible to slice
  slice them at all.

- Made it possible to assign `np.bool_` objects as header values. (#123)

- Fixed overly strict handling of the EXTEND keyword; see "Changes in
  behavior" above. (#124)

- Fixed many cases where an HDU's header would be marked as "modified" by
  PyFITS and rewritten, even when no changes to the header are necessary.
  (#125)

- Fixed a bug where the values of the PTYPEn keywords in a random groups HDU
  were forced to be all lower-case when saving the file. (#130)

- Removed an unnecessary inline import in `ExtensionHDU.__setattr__` that was
  causing some slowdown when opening files containing a large number of
  extensions, plus a few other small (but not insignficant) performance
  improvements thanks to Julian Taylor. (#133)

- Fixed a regression where header blocks containing invalid end-of-header
  padding (i.e. null bytes instead of spaces) couldn't be parsed by PyFITS.
  Such headers can be parsed again, but a warning is raised, as such headers
  are not valid FITS. (#136)

- Fixed a memory leak where table data in random groups HDUs weren't being
  garbage collected. (#138)


3.0.6 (2012-02-29)
------------------

Highlights
^^^^^^^^^^

The main reason for this release is to fix an issue that was introduced in
PyFITS 3.0.5 where merely opening a file containing scaled data (that is, with
non-trivial BSCALE and BZERO keywords) in 'update' mode would cause the data
to be automatically rescaled--possibly converting the data from ints to
floats--as soon as the file is closed, even if the application did not touch
the data.  Now PyFITS will only rescale the data in an extension when the data
is actually accessed by the application.  So opening a file in 'update' mode
in order to modify the header or append new extensions will not cause any
change to the data in existing extensions.

This release also fixes a few Windows-specific bugs found through more
extensive Windows testing, and other miscellaneous bugs.

Bug Fixes
^^^^^^^^^

- More accurate error messages when opening files containing invalid header
  cards. (#109)

- Fixed a possible reference cycle/memory leak that was caught through more
  extensive testing on Windows. (#112)

- Fixed 'ostream' mode to open the underlying file in 'wb' mode instead of 'w'
  mode. (#112)

- Fixed a Windows-only issue where trying to save updates to a resized FITS
  file could result in a crash due to there being open mmaps on that file.
  (#112)

- Fixed a crash when trying to create a FITS table (i.e. with new_table())
  from a Numpy array containing bool fields. (#113)

- Fixed a bug where manually initializing an ``HDUList`` with a list of of
  HDUs wouldn't set the correct EXTEND keyword value on the primary HDU.
  (#114)

- Fixed a crash that could occur when trying to deepcopy a Header in Python <
  2.7. (#115)

- Fixed an issue where merely opening a scaled image in 'update' mode would
  cause the data to be converted to floats when the file is closed. (#119)


3.0.5 (2012-01-30)
------------------

- Fixed a crash that could occur when accessing image sections of files
  opened with memmap=True. (r1211)

- Fixed the inconsistency in the behavior of files opened in 'readonly' mode
  when memmap=True vs. when memmap=False.  In the latter case, although
  changes to array data were not saved to disk, it was possible to update the
  array data in memory.  On the other hand with memmap=True, 'readonly' mode
  prevented even in-memory modification to the data.  This is what
  'copyonwrite' mode was for, but difference in behavior was confusing.  Now
  'readonly' is equivalent to 'copyonwrite' when using memmap.  If the old
  behavior of denying changes to the array data is necessary, a new
  'denywrite' mode may be used, though it is only applicable to files opened
  with memmap. (r1275)

- Fixed an issue where files opened with memmap=True would return image data
  as a raw numpy.memmap object, which can cause some unexpected
  behaviors--instead memmap object is viewed as a numpy.ndarray. (r1285)

- Fixed an issue in Python 3 where a workaround for a bug in Numpy on Python 3
  interacted badly with some other software, namely to vo.table package (and
  possibly others). (r1320, r1337, and #110)

- Fixed buggy behavior in the handling of SIGINTs (i.e. Ctrl-C keyboard
  interrupts) while flushing changes to a FITS file.  PyFITS already prevented
  SIGINTs from causing an incomplete flush, but did not clean up the signal
  handlers properly afterwards, or reraise the keyboard interrupt once the
  flush was complete. (r1321)

- Fixed a crash that could occur in Python 3 when opening files with checksum
  checking enabled. (r1336)

- Fixed a small bug that could cause a crash in the `StreamingHDU` interface
  when using Numpy below version 1.5.

- Fixed a crash that could occur when creating a new `CompImageHDU` from an
  array of big-endian data. (#104)

- Fixed a crash when opening a file with extra zero padding at the end.
  Though FITS files should not have such padding, it's not explictly forbidden
  by the format either, and PyFITS shouldn't stumble over it. (#106)

- Fixed a major slowdown in opening tables containing large columns of string
  values.  (#111)


3.0.4 (2011-11-22)
------------------

- Fixed a crash when writing HCOMPRESS compressed images that could happen on
  Python 2.5 and 2.6. (r1217)

- Fixed a crash when slicing an table in a file opened in 'readonly' mode with
  memmap=True. (r1230)

- Writing changes to a file or writing to a new file verifies the output in
  'fix' mode by default instead of 'exception'--that is, PyFITS will
  automatically fix common FITS format errors rather than raising an
  exception. (r1243)

- Fixed a bug where convenience functions such as getval() and getheader()
  crashed when specifying just 'PRIMARY' as the extension to use (r1263).

- Fixed a bug that prevented passing keyword arguments (beyond the standard
  data and header arguments) as positional arguments to the constructors of
  extension HDU classes.

- Fixed some tests that were failing on Windows--in this case the tests
  themselves failed to close some temp files and Windows refused to delete them
  while there were still open handles on them. (r1295)

- Fixed an issue with floating point formatting in header values on Python 2.5
  for Windows (and possibly other platforms).  The exponent was zero-padded to
  3 digits; although the FITS standard makes no specification on this, the
  formatting is now normalized to always pad the exponent to two digits.
  (r1295)

- Fixed a bug where long commentary cards (such as HISTORY and COMMENT) were
  broken into multiple CONTINUE cards.  However, commentary cards are not
  expected to be found in CONTINUE cards.  Instead these long cards are broken
  into multiple commentary cards. (#97)

- GZIP/ZIP-compressed FITS files can be detected and opened regardless of
  their filename extension. (#99)

- Fixed a serious bug where opening scaled images in 'update' mode and then
  closing the file without touching the data would cause the file to be
  corrupted. (#101)


3.0.3 (2011-10-05)
------------------

- Fixed several small bugs involving corner cases in record-valued keyword
  cards (#70)

- In some cases HDU creation failed if the first keyword value in the header
  was not a string value (#89)

- Fixed a crash when trying to compute the HDU checksum when the data array
  contains an odd number of bytes (#91)

- Disabled an unnecessary warning that was displayed on opening compressed
  HDUs with disable_image_compression = True (#92)

- Fixed a typo in code for handling HCOMPRESS compressed images.


3.0.2 (2011-09-23)
------------------

- The ``BinTableHDU.tcreate`` method and by extension the ``pyfits.tcreate``
  function don't get tripped up by blank lines anymore (#14)

- The presence, value, and position of the EXTEND keyword in Primary HDUs is
  verified when reading/writing a FITS file (#32)

- Improved documentation (in warning messages as well as in the handbook) that
  PyFITS uses zero-based indexing (as one would expect for C/Python code, but
  contrary to the PyFITS standard which was written with FORTRAN in mind)
  (#68)

- Fixed a bug where updating a header card comment could cause the value to be
  lost if it had not already been read from the card image string.

- Fixed a related bug where changes made directly to Card object in a header
  (i.e. assigning directly to card.value or card.comment) would not propagate
  when flushing changes to the file (#69) [Note: This and the bug above it
  were originally reported as being fixed in version 3.0.1, but the fix was
  never included in the release.]

- Improved file handling, particularly in Python 3 which had a few small file
  I/O-related bugs (#76)

- Fixed a bug where updating a FITS file would sometimes cause it to lose its
  original file permissions (#79)

- Fixed the handling of TDIMn keywords; 3.0 added support for them, but got
  the axis order backards (they were treated as though they were row-major)
  (#82)

- Fixed a crash when a FITS file containing scaled data is opened and
  immediately written to a new file without explicitly viewing the data first
  (#84)

- Fixed a bug where creating a table with columns named either 'names' or
  'formats' resulted in an infinite recursion (#86)


3.0.1 (2011-09-12)
------------------

- Fixed a bug where updating a header card comment could cause the value to be
  lost if it had not already been read from the card image string.

- Changed ``_TableBaseHDU.data`` so that if the data contain an empty table a
  ``FITS_rec`` object with zero rows is returned rather than ``None``.

- The ``.key`` attribute of ``RecordValuedKeywordCards`` now returns the full
  keyword+field-specifier value, instead of just the plain keyword (#46)

- Fixed a related bug where changes made directly to Card object in a header
  (i.e. assigning directly to card.value or card.comment) would not propagate
  when flushing changes to the file (#69)

- Fixed a bug where writing a table with zero rows could fail in some cases
  (#72)

- Miscellanous small bug fixes that were causing some tests to fail,
  particularly on Python 3 (#74, #75)

- Fixed a bug where creating a table column from an array in non-native byte
  order would not preserve the byte order, thus interpreting the column array
  using the wrong byte order (#77)


3.0.0 (2011-08-23)
--------------------

- Contains major changes, bumping the version to 3.0

- Large amounts of refactoring and reorganization of the code; tried to
  preserve public API backwards-compatibility with older versions (private API
  has many changes and is not guaranteed to be backwards-compatible).  There
  are a few small public API changes to be aware of:

  * The pyfits.rec module has been removed completely.  If your version of
    numpy does not have the numpy.core.records module it is too old to be used
    with PyFITS.

  * The ``Header.ascardlist()`` method is deprecated--use the ``.ascard``
    attribute instead.

  * ``Card`` instances have a new ``.cardimage`` attribute that should be used
    rather than ``.ascardimage()``, which may become deprecated.

  * The ``Card.fromstring()`` method is now a classmethod.  It returns a new
    ``Card`` instance rather than modifying an existing instance.

  * The ``req_cards()`` method on HDU instances has changed:  The ``pos``
    argument is not longer a string.  It is either an integer value (meaning
    the card's position must match that value) or it can be a function that
    takes the card's position as it's argument, and returns True if the
    position is valid.  Likewise, the ``test`` argument no longer takes a
    string, but instead a function that validates the card's value and returns
    True or False.

  * The ``get_coldefs()`` method of table HDUs is deprecated.  Use the
    ``.columns`` attribute instead.

  * The ``ColDefs.data`` attribute is deprecated--use ``ColDefs.columns``
    instead (though in general you shouldn't mess with it directly--it might
    become internal at some point).

  * ``FITS_record`` objects take ``start`` and ``end`` as arguments instead of
    ``startColumn`` and ``endColumn`` (these are rarely created manually, so
    it's unlikely that this change will affect anyone).

  * ``BinTableHDU.tcreate()`` is now a classmethod, and returns a new
    ``BinTableHDU`` instance.

  * Use ``ExtensionHDU`` and ``NonstandardExtHDU`` for making new extension HDU
    classes.  They are now public interfaces, wheres previously they were
    private and prefixed with underscores.

  * Possibly others--please report if you find any changes that cause
    difficulties.

- Calls to deprecated functions will display a Deprecation warning.  However,
  in Python 2.7 and up Deprecation warnings are ignored by default, so run
  Python with the `-Wd` option to see if you're using any deprecated
  functions.  If we get close to actually removing any functions, we might
  make the Deprecation warnings display by default.

- Added basic Python 3 support

- Added support for multi-dimensional columns in tables as specified by the
  TDIMn keywords (#47)

- Fixed a major memory leak that occurred when creating new tables with the
  ``new_table()`` function (#49)
  be padded with zero-bytes) vs ASCII tables (where strings are padded with
  spaces) (#15)

- Fixed a bug in which the case of Random Access Group parameters names was not
  preserved when writing (#41)

- Added support for binary table fields with zero width (#42)

- Added support for wider integer types in ASCII tables; although this is non-
  standard, some GEIS images require it (#45)

- Fixed a bug that caused the index_of() method of HDULists to crash when the
  HDUList object is created from scratch (#48)

- Fixed the behavior of string padding in binary tables (where strings should
  be padded with nulls instead of spaces)

- Fixed a rare issue that caused excessive memory usage when computing
  checksums using a non-standard block size (see r818)

- Add support for forced uint data in image sections (#53)

- Fixed an issue where variable-length array columns were not extended when
  creating a new table with more rows than the original (#54)

- Fixed tuple and list-based indexing of FITS_rec objects (#55)

- Fixed an issue where BZERO and BSCALE keywords were appended to headers in
  the wrong location (#56)

- ``FITS_record`` objects (table rows) have full slicing support, including
  stepping, etc. (#59)

- Fixed a bug where updating multiple files simultaneously (such as when
  running parallel processes) could lead to a race condition with mktemp()
  (#61)

- Fixed a bug where compressed image headers were not in the order expected by
  the funpack utility (#62)
d28e661
Jonathan Perkin jperkin referenced this issue from a commit
obache Update msgpack to 0.5.8.
2013-12-23 version 0.5.8:

  * Move to the new github repository msgpack/msgpack-c
  * Support the new deserialization specification
  * fixes the problem of unpack helpers for array and map with 32bit compilers (#37, #38)
  * Other bug fixes and refactoring: #46, #41, #36, #35, #33, #32, #30, #29, #28, #27, #26, #25, #8, #3
  * Update of documents: #23, #18, #17
8fd3b1b
Jonathan Perkin jperkin referenced this issue from a commit
imil Updated irclib to version 8.5.4
8.5.4

    Issue #32: Add logging around large DCC messages to facilitate
    troubleshooting.
    Issue #31: Fix error in connection wrapper for SSL example.

8.5.3

    Issue #28: Fix TypeError in version calculation in irc.bot CTCP version.

8.5.2

    Updated DCC send and receive scripts (Issue #27).

8.5.1

    Fix timestamp support in schedule.DelayedCommand construction.

8.5

    irc.client.NickMask is now a Unicode object on Python 2. Fixes issue
    reported in pull request #19.
    Issue #24: Added DCCConnection.send_bytes for transmitting binary data.
    privmsg remains to support transmitting text.

8.4

    Code base now runs natively on Python 2 and Python 3, but requires six to
    be installed.
    Issue #25: Rate-limiting has been updated to be finer grained (preventing
    bursts exceeding the limit following idle periods).

8.3.2

    Issue #22: Catch error in bot.py on NAMREPLY when nick is not in any visible
    channel.

8.3.1

    Fixed encoding errors in server on Python 3.

8.3

    Added a set_keepalive method to the ServerConnection. Sends a periodic PING
    message every indicated interval.

8.2

    Added support for throttling send_raw messages via the ServerConnection
    object. For example, on any connection object:

        connection.set_rate_limit(30)

    That would set the rate limit to 30 Hz (30 per second). Thanks to Jason Kendall for the suggestion and bug fixes.

8.1.2

    Fix typo in client.NickMask.

8.1.1

    Fix typo in bot.py.

8.1

    Issue #15: Added client support for ISUPPORT directives on server connections. Now, each ServerConnection has a features attribute which reflects the features supported by the server. See the docs for irc.features for details about the implementation.

8.0.1

    Issue #14: Fix errors when handlers of the same priority are added under Python 3. This also fixes the unintended behavior of allowing handlers of the same priority to compare as unequal.

8.0

This release brings several backward-incompatible changes to the scheduled commands.

    Refactored implementation of schedule classes. No longer do they override the datetime constructor, but now only provide suitable classmethods for construction in various forms.
    Removed backward-compatible references from irc.client.
    Remove 'arguments' parameter from scheduled commands.

Clients that reference the schedule classes from irc.client or that construct them from the basic constructor will need to update to use the new class methods:

- DelayedCommand -> DelayedCommand.after
- PeriodicCommand -> PeriodicCommand.after

Arguments may no longer be passed to the 'function' callback, but one is encouraged instead to use functools.partial to attach parameters to the callback. For example:

DelayedCommand.after(3, func, ('a', 10))

becomes:

func = functools.partial(func, 'a', 10)
DelayedCommand.after(3, func)

This mode puts less constraints on the both the handler and the caller. For example, a caller can now pass keyword arguments instead:

func = functools.partial(func, name='a', quantity=10)
DelayedCommand.after(3, func)

Readability, maintainability, and usability go up.
7.1.2

    Issue #13: TypeError on Python 3 when constructing PeriodicCommand (and thus execute_every).

7.1.1

    Fixed regression created in 7.0 where PeriodicCommandFixedDelay would only cause the first command to be scheduled, but not subsequent ones.

7.1

    Moved scheduled command classes to irc.schedule module. Kept references for backwards-compatibility.

7.0

    PeriodicCommand now raises a ValueError if it's created with a negative or zero delay (meaning all subsequent commands are immediately due). This fixes #12.

    Renamed the parameters to the IRC object. If you use a custom event loop and your code constructs the IRC object with keyword parameters, you will need to update your code to use the new names, so:

    IRC(fn_to_add_socket=adder, fn_to_remove_socket=remover, fn_to_add_timeout=timeout)

    becomes:

    IRC(on_connect=adder, on_disconnect=remover, on_schedule=timeout)

    If you don't use a custom event loop or you pass the parameters positionally, no change is necessary.

6.0.1

    Fixed some unhandled exceptions in server client connections when the client would disconnect in response to messages sent after select was called.

6.0

    Moved LineBuffer and DecodingLineBuffer from client to buffer module. Backward-compatible references have been kept for now.
    Removed daemon mode and log-to-file options for server.
    Miscellaneous bugfixes in server.

5.1.1

    Fix error in 2to3 conversion on irc/server.py (issue #11).

5.1

The IRC library is now licensed under the MIT license.

    Added irc/server.py, based on hircd by Ferry Boender.
    Added support for CAP command (pull request #10), thanks to Danneh Oaks.

5.0

Another backward-incompatible change. In irc 5.0, many of the unnecessary getter functions have been removed and replaced with simple attributes. This change addresses issue #2. In particular:

        Connection._get_socket() -> Connection.socket (including subclasses)
        Event.eventtype() -> Event.type
        Event.source() -> Event.source
        Event.target() -> Event.target
        Event.arguments() -> Event.arguments

The nm_to_* functions were removed. Instead, use the NickMask class attributes.

These deprecated function aliases were removed from irc.client:

- parse_nick_modes -> modes.parse_nick_modes
- parse_channel_modes -> modes.parse_channel_modes
- generated_events -> events.generated
- protocol_events -> events.protocol
- numeric_events -> events.numeric
- all_events -> events.all
- irc_lower -> strings.lower

Also, the parameter name when constructing an event was renamed from eventtype to simply type.
4.0

    Removed deprecated arguments to ServerConnection.connect. See notes on the 3.3 release on how to use the connect_factory parameter if your application requires ssl, ipv6, or other connection customization.

3.6.1

    Filter out disconnected sockets when processing input.

3.6

    Created two new exceptions in irc.client: MessageTooLong and InvalidCharacters.
    Use explicit exceptions instead of ValueError when sending data.

3.5

    SingleServerIRCBot now accepts keyword arguments which are passed through to the ServerConnection.connect method. One can use this to use SSL for connections:

    factory = irc.connection.Factory(wrapper=ssl.wrap_socket)
    bot = irc.bot.SingleServerIRCBot(..., connect_factory = factory)
1ee66e1
Jonathan Perkin jperkin referenced this issue from a commit
wen Update to 2.4.1
Upstream changes:
2.4.1 2014-09-21T12:57:11Z
    - Fix build issues (#34)

v2.4.0 2014-09-21T02:04:01Z
    - Fix build issues (#32)
4aef92d
iMil

I'm trying to reproduce that behavior, unfortunately your repository is for x86_64 and I only have my hands on an i386 SmartOS zone, any chance you could build a repository for i386?

Claus Conrad

Hi iMilnb,

sorry, I am not using SmartOS anymore, thus I am not able to help with this :/

Best regards,
Claus Conrad

Brian Bennett
Owner

Root cause is NetBSDfr/pkgin#1 which has now been fixed. As soon as we get the new version of pkgin imported this issue can be closed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.