Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

net/polsms: fix build on SmartOS #138

Closed
wants to merge 1 commit into from

Conversation

wiedi
Copy link

@wiedi wiedi commented Dec 7, 2013

fix build on SmartOS

jperkin pushed a commit that referenced this pull request Dec 9, 2013
= Changes in 2.3.2 =

  January 5, 2013 - version 2.3.2

  * Changes

    * #138 Revert Timeout change unintentionally included in v2.3.1.  It's
      reported that the change causes background processes not terminated
      properly.

= Changes in 2.3.1 =

  January 1, 2013 - version 2.3.1

  * Changes

    * #137 Signing key is expiring for cacert_sha1.p7s.
      Deleted p7s signature check for default cacerts.  Sorry for many troubles
      in the past. This feature is not useful without having online/real-time
      CA certs update but I don't think I can implement it in near future.
      Users depend on this signature check (who puts cacert.p7s in R/W
      filesystem and ssl_config.rb in R/O filesystem) should take care the
      tampering by themself.

  * Bug fixes

    * #122 Support IPv6 address in URI


= Changes in 2.3.0 =

  October 10, 2012 - version 2.3.0

    * Features

      * Added debug mode CLI.  bin/httpclient is installed as CLI.
          Usage: 1) % httpclient get https://www.google.co.jp/ q=ruby
          Usage: 2) %httpclient
        For 1) it issues a GET request to the given URI and shows the wiredump
        and the parsed result.  For 2) it invokes irb shell with the binding
        that has a HTTPClient as 'self'.  You can call HTTPClient instance
        methods like;
          > get "https://www.google.co.jp/", :q => :ruby

      * #119 Addressable gem support (only if it exists); should handle IRI
        properly.

    * Bug fixes

      * #115 Cookies couldn't work properly if the path in an URI is ommited.
      * #112, #117 Proper handling of sized IO (the IO object that responds to
        :size) for chunked POST. HTTPClient did read till EOF even if the
        given IO has :size method.
      * Handle '303 See Other' properly.  RFC2616 says it should be redirected
        with GET.
      * #116 Fix "100-continue" support.  It was just ignored.
      * #118 Support for boolean values when making POST/PUT requests with
        multiipart/form Content-Type.
      * #110 Allows leading dots in no_proxy hostname suffixes.
jperkin pushed a commit that referenced this pull request Dec 9, 2013
== Ruby-GNOME2 1.2.5: 2013-03-28

Crash bug fix release!

=== Changes

==== All

  * Fixes
    * Fixed crash bugs.
      [GitHub #138] [Reported by Takuma Nakajima]

=== Thanks

  * Takuma Nakajima

== Ruby-GNOME2 1.2.4: 2013-03-24

Ruby/WebKitGtk2 addition release!

=== Changes

==== All

  * Improvements
    * Start mswin64 support. (But it is not completed yet.)
      [GitHub #135] [Patch by usa]

==== Ruby/GLib2

  * Improvements
    * Reduce needless GBoxed object copy.

==== Ruby/GdkPixbuf2

  * Fixes
    * Fix build error by a typo.

==== Ruby/GtkSourceView2

  * Improvements
    * Support auto RPM install on CentOS 6.

==== Ruby/GObjectIntrospection

  * Improvements
    * Add method name to arguments validation failure message.
    * Support specific version loading.

==== Ruby/GTK3

  * Improvements
    * [windows] Add gschemas.compiled.
      [ruby-talk:406026] [Reported by Regis d'Aubarede]

==== Ruby/WebKitGtk2

  * New!
    [GitHub #136] [Patch by eumario]

=== Thanks

  * usa
  * Regis d'Aubarede
  * eumario
jperkin pushed a commit that referenced this pull request Dec 9, 2013
Changelog:

-------------------------------------------------------------
mp3splt-gtk version 0.8.2

- fixed important bug in mp3splt-gtk: split using cue file was not splitting the last part
- fixed tags encoding issue in mp3splt-gtk: encode in UTF-8 tags if not valid UTF-8
- implemented "prelisten a section to its ending splitpoint" in mp3splt-gtk (feature request #98)
- libmp3splt check is now more correct and checks for the exact version of libmp3splt with = instead
of >=; will be changed to >= when final version of libmp3splt will be released
- now using pkg-config instead of mp3splt.m4 (bug #145)
- corrected build files (configure.ac, Makefile.am, ...) and check using 'make distcheck' (bug #147)

-------------------------------------------------------------
mp3splt-gtk version 0.8.1

- fixed important bug: application was crashing when pushing the split button without any
splitpoint (libmp3splt)
- fixed important bug: split by time was in hundreths of seconds instead of seconds

-------------------------------------------------------------
mp3splt-gtk version 0.8

- added tags edition from the splitpoints table - closes feature #92
- added cloning features for mass copying of tags using right click on the splitpoints table
- enhanced the CUE export to export the tags as REM comments and also the splitpoint names
- automatically save & restore splitpoints in '~/.mp3splt-gtk/splitpoints.cue'
- better amplitude wave display (wave does not "shake" anymore)
- done issue #37 & #138 - nicer GUI for the option 'same output directory as the input file'
- fixed amplitude wave to be more precise with ogg vorbis files (libmp3splt)
- fixed important bug on mp3splt-gtk 'Queue to player' button
- fixed bug #128 - hash symbol in filename breaks the player
- done feature #38 - reorder filenames in mp3splt-gtk (description_here_partXX)
- fixed bug #133 - updated GPLv2 COPYING file
- fixed bug #137 - autogen.sh should run libtoolize before aclocal/automake
- fixed bug #143 - be able to add splitpoint at the end from the player
- fixed bug #136 - various compilation issues
- fixed issue #90 - added back the icons to split preview and play preview in the splitpoints table
- added a lot of tooltip and GUI renamings
- done feature #91 - amplitude wave now persists in preferences
- added one more interpolation level for the amplitude wave (level 6)
- more precise wave preview in preferences
- fixed bug when detecting the input tags version - output had no tags when the input only had ID3v1
(libmp3splt)
- fixed bug #141 - when input file is a symlink and output directory is the one of the input file
(libmp3splt)
- amplitude more precise with ogg vorbis files (libmp3splt)
- fixed bug on mp3 trim silence scan: last frame was skipped (libmp3splt)

-------------------------------------------------------------
mp3splt-gtk version 0.7.3

- redesigned the mp3splt-gtk user interface
- added option to specify the wave quality in the parameters (for performance reasons)
- wave interpolation is now much correct - we use the douglas peucker algorithm instead of the previous one which was stupid
- added gray areas where no splitpoints - regarding #3520736
- added seek key shortcuts to the player - #1811400 & #3528001
- heavy refactoring of mp3splt-gtk code
- fixed bug: removing TLEN id3v2 tag from the split files (libmp3splt)
- fixed bug #3530488 - regression introduced with ogg multiple logical streams (libmp3splt)

-------------------------------------------------------------
mp3splt-gtk version 0.7.2

- fixed an important bug of memory leak in player drawing when using GTK+-2
- fixed bug not showing icon and image in the about dialog
- fix for the '--disable-gtk3' option; also fixed the gtk 2.x/3.x check
- made some player graphic optimisations
- added player refresh rate option in Preferences->Player
- added expanders to the player history and player splitpoints view
- we don't need gtk 2 version >= 2.20; changed it to 2.18

-------------------------------------------------------------
mp3splt-gtk version 0.7.1

- added minimum track length option for silence scan - closes #2393766
- added gtk3 support (auto detection or --enable-gtk3, --disable-gtk3) - almost closes #3385903
(some tests still need to be done)
- fixed #3385841 - removed scrollkeeper warnings
- fixed #3385827 - added --disable-doxygen_doc
- fixed #3385829 - building doxygen documentation by itself + installing doxygen files
- fixed #3385833 - don't apply debugging flags or warnings flags by default:
added --enable-c-debug --enable-optimise --enable-extra-warnings
- added support for multiple ogg/vorbis logical streams (mail) (libmp3splt)
- fixed mp3 frame mode with skippoint when skippoint too small (on the same frame as previous) (libmp3splt)
- fixed several audacity labels issues (libmp3splt)
- fixed some regression regarding mp3splt v2.1c - removed some checks relative to the total
time - we cannot rely on the total time - for example with concatenated mp3s (libmp3splt)
@jperkin
Copy link
Collaborator

jperkin commented Dec 10, 2013

Fixed upstream, thanks!

@jperkin jperkin closed this Dec 10, 2013
jperkin pushed a commit that referenced this pull request Jan 21, 2014
Changelog:

-------------------------------------------------------------
mp3splt-gtk version 0.8.2

- fixed important bug in mp3splt-gtk: split using cue file was not splitting the last part
- fixed tags encoding issue in mp3splt-gtk: encode in UTF-8 tags if not valid UTF-8
- implemented "prelisten a section to its ending splitpoint" in mp3splt-gtk (feature request #98)
- libmp3splt check is now more correct and checks for the exact version of libmp3splt with = instead
of >=; will be changed to >= when final version of libmp3splt will be released
- now using pkg-config instead of mp3splt.m4 (bug #145)
- corrected build files (configure.ac, Makefile.am, ...) and check using 'make distcheck' (bug #147)

-------------------------------------------------------------
mp3splt-gtk version 0.8.1

- fixed important bug: application was crashing when pushing the split button without any
splitpoint (libmp3splt)
- fixed important bug: split by time was in hundreths of seconds instead of seconds

-------------------------------------------------------------
mp3splt-gtk version 0.8

- added tags edition from the splitpoints table - closes feature #92
- added cloning features for mass copying of tags using right click on the splitpoints table
- enhanced the CUE export to export the tags as REM comments and also the splitpoint names
- automatically save & restore splitpoints in '~/.mp3splt-gtk/splitpoints.cue'
- better amplitude wave display (wave does not "shake" anymore)
- done issue #37 & #138 - nicer GUI for the option 'same output directory as the input file'
- fixed amplitude wave to be more precise with ogg vorbis files (libmp3splt)
- fixed important bug on mp3splt-gtk 'Queue to player' button
- fixed bug #128 - hash symbol in filename breaks the player
- done feature #38 - reorder filenames in mp3splt-gtk (description_here_partXX)
- fixed bug #133 - updated GPLv2 COPYING file
- fixed bug #137 - autogen.sh should run libtoolize before aclocal/automake
- fixed bug #143 - be able to add splitpoint at the end from the player
- fixed bug #136 - various compilation issues
- fixed issue #90 - added back the icons to split preview and play preview in the splitpoints table
- added a lot of tooltip and GUI renamings
- done feature #91 - amplitude wave now persists in preferences
- added one more interpolation level for the amplitude wave (level 6)
- more precise wave preview in preferences
- fixed bug when detecting the input tags version - output had no tags when the input only had ID3v1
(libmp3splt)
- fixed bug #141 - when input file is a symlink and output directory is the one of the input file
(libmp3splt)
- amplitude more precise with ogg vorbis files (libmp3splt)
- fixed bug on mp3 trim silence scan: last frame was skipped (libmp3splt)

-------------------------------------------------------------
mp3splt-gtk version 0.7.3

- redesigned the mp3splt-gtk user interface
- added option to specify the wave quality in the parameters (for performance reasons)
- wave interpolation is now much correct - we use the douglas peucker algorithm instead of the previous one which was stupid
- added gray areas where no splitpoints - regarding #3520736
- added seek key shortcuts to the player - #1811400 & #3528001
- heavy refactoring of mp3splt-gtk code
- fixed bug: removing TLEN id3v2 tag from the split files (libmp3splt)
- fixed bug #3530488 - regression introduced with ogg multiple logical streams (libmp3splt)

-------------------------------------------------------------
mp3splt-gtk version 0.7.2

- fixed an important bug of memory leak in player drawing when using GTK+-2
- fixed bug not showing icon and image in the about dialog
- fix for the '--disable-gtk3' option; also fixed the gtk 2.x/3.x check
- made some player graphic optimisations
- added player refresh rate option in Preferences->Player
- added expanders to the player history and player splitpoints view
- we don't need gtk 2 version >= 2.20; changed it to 2.18

-------------------------------------------------------------
mp3splt-gtk version 0.7.1

- added minimum track length option for silence scan - closes #2393766
- added gtk3 support (auto detection or --enable-gtk3, --disable-gtk3) - almost closes #3385903
(some tests still need to be done)
- fixed #3385841 - removed scrollkeeper warnings
- fixed #3385827 - added --disable-doxygen_doc
- fixed #3385829 - building doxygen documentation by itself + installing doxygen files
- fixed #3385833 - don't apply debugging flags or warnings flags by default:
added --enable-c-debug --enable-optimise --enable-extra-warnings
- added support for multiple ogg/vorbis logical streams (mail) (libmp3splt)
- fixed mp3 frame mode with skippoint when skippoint too small (on the same frame as previous) (libmp3splt)
- fixed several audacity labels issues (libmp3splt)
- fixed some regression regarding mp3splt v2.1c - removed some checks relative to the total
time - we cannot rely on the total time - for example with concatenated mp3s (libmp3splt)
jperkin pushed a commit that referenced this pull request Jan 21, 2014
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)
jperkin pushed a commit that referenced this pull request Jan 29, 2014
## python-markdown2 2.2.0

- [issue #135] Fix fenced code blocks odd rendering.
- [pull #138] specify shell in Makefile
- [pull #130] break-on-newline extra
- [pull #140] Allow html-classes for img
- [pull #122] Allow parentheses in urls
jperkin pushed a commit that referenced this pull request Jan 30, 2014
Release 3.1.2 - 2014/01/29
--------------------------

Improvements
^^^^^^^^^^^^

* [doc] Updated to caplitalized "Groonga" terms in documentation. [Patch by cosmo0920] [GitHub#136, #137, #138, #139, #140, #141, #142, #143, #144, #145, #146, #147, #148, #149, #150, #151]
* Supported to customize the value of lock timeout. See :doc:`/reference/api/global_configurations` about details.
  [groonga-dev,02017] [Suggested by yoku]
* [doc] Added description about the value of lock timeout.
* Enabled ``GRN_JA_SKIP_SAME_VALUE_PUT`` by default. In the previous releases, the value of
  this configuration is 'no'. This change affects reducing the size of Groonga database.
* Supported multiple indexes including a nested index and multiple keywords query.
  This change improves missing search results isssue when narrowing down by multiple keywords query.
* Added API to customize normalizer for snippet.

Fixes
^^^^^

* Fixed not to use index for empty query. This change enables you to search even though empty query.
  Note that this means that there is performance penalty if many empty records exist.
  [groonga-dev,02052] [Reported by Naoya Murakami]
* Fixed the behaviour about return value of "X || Y" and "X && Y" for adjusting to ECMAScript.
  In "X || Y" case, if either X or Y satisfy the condition, it returns X itself or Y itself instead of 1 or 0.
* In "X && Y" case, if X and Y satisfy the condition, it returns X itself instead of 1.
  if X doesn't satisfy the condition, it returns false instead of 0.
* Fixed to return null when no snippet is found. This change enables you to set the default value
  of :doc:`/reference/functions/snippet_html`. In such a purpose, use "snippet_html(XXX) || 'default value'".

Thanks
^^^^^^

* cosmo0920
* yoku
* Naoya Murakami
jperkin pushed a commit that referenced this pull request Feb 6, 2014
17 Dec 2013 - 2.7.7
-------------------
Fixes:

- Changed release version to 2.7.7
- Got the configure scripts inside the release tarball


16 Dec 2013 - 2.7.6
-------------------
Improvements:

- Organizes all Makefile.am - 1cde4d2dd9d96747536c1c25d06ba0677069477f
  Now using one file per line (sorted). This is the better way to handle it, since it reduces the possibility of merge conflicts.

- nginx: generates config file using configure input. - 351b9cc357d439e30ebd61d89a9e38ecf55c6827
  The nginx config file was looking for depedencies by its own, by doing that it was ignoring the options that were passed to configure script. This commit deletes this config file and adds a meta-config which is populated by configure whenever the standalone-module is enabled.

- nginx: adds lua support - da16d9e5d51d4ef8734687514a4e1368e7fb4284

- iis: Cosmetics fixies on sqli. - 5046c8327ea21c69b4c0d0c0057c692b05b09fef
  This is needed to get it compiled with VS2011 on Windows8

- Regression tests: makes configuration compatible with 2.2 and 2.4 (try 2) - ae252ee8767069363906e5a611dff487b799b839

- nginx: Trying apxs and apxs2 while compiling nginx module - 65d9272fdc353e1263567b60604542d377d19672

- nginx: Trying apxs and apxs2 while compiling nginx module - 35fd75d859e4a8873b8843da1db13e04a1b08140

- macos: Using glibtoolize instead of libtoolize - 751a9f4e45213cd69f00c62c71edc9d7ad99b82d

- regression-tests: makes configuration compatible with 2.2 and 2.4 - 6fc4cac37ab1be8d1232140042b58fe4bd93ee17

- Regression test: get it working with apache 2.4 - e9813cd0d9bfc5b0c9aa5832634ec1b39b805108
  Changes in httpd.conf.in to get it working with apache 2.4

- Code cosmetics. - 7366f35c1d80772d739b35da8faa972f92a72b97
  Changed to reduce the number of possible fails during Build Bot compilation.

- iis: Waiting for 5 seconds before move curl directory - 9bf2959c919587ebc63f5a1b8c0785da8927bff5
  Testing buildbot.

- Redefines unixd_set_global_mutex_perms on tests - f70f6f4281b806627e0cf0dbb9c84ae5864bdb16
  Avoding conflicts with the standalone implementation

- Adds verbose quality check - 388943440cc9b8c6fdea09f5e365a2e5a3e792e2
  Vera++ and ccpcheck are not outputing to the stderr instead stdout allowing the buildbot to extract some numbers about it.

- Adds support for coding style and quality check - b77e90152d119609ac78a7028383c3b79898b2cf
  Initial effort to get the code on shape. This will be executed by the buildbots as soon as they get ready for it.

- iis: New improvements on the Wix installer - 2ea5a74a7bfb00f21312e51e48aa6dac03d84600
  * Now the installation is divided in modules: ModSecurity and CRS.
  * Added default configuration
  * Configuration was moved to "Program Files" folder
  * Build_msi script now using candle available in %PATH%

- iis: Removes the installer helper dependency - 1a12648c9f6028f251af0f03c889397c7954b74c
  Now using appcmd directly with WiX instead of calling the installer helper.

- iis: Remove readme.html - 550d5aae21cba696cac1ce75ab8113e5255d5a59
  This HTML is about "Creating a Native Module for IIS7" not straight related to ModSecurity itself.

- iis: Adds batch script to compile Wix - a2c5fc831baf0b324ebb66b0f878dacf1ec2f808
  This batch script can be used to generate our msi installer.

- iis: Adds Wix installer resources - 3604763e15a665eb7a6ecae1f7e7c65cebbb1d17
  This is all about cosmetic changes.

- iss: Removes Post-Build event. - 28bbde1bb218b004654cb865fc8563d69b848dc2
  There was a copy on Post-Build event using a hard coded path. This patch removes this Post-Build event.

- iis: Relative paths on the VS project file - 368617ddb2443f9b6036f80a648d467d07c9a054
  There are a ModSecurityIIS solution and project files, those were using hard coded paths to meet the dependencies. As consequence of the last update in our build scripts, now we are able to built the dependencies and load it to our Visual Studio project using relative paths.

- iis: Adds release script - 9477118903861ce80c4c27cb581bf3462315e98e

- iis: fixies the Installer.cpp coding style - 79875b1af8e8571098345b91557bab9c06eb7c88

- iis: Removes AppWizard remade file - 91738f93bcc82b6ab756c550a66b6cf6af2fa9f8
  Apparently the AppWizard was used to generate part of this Installer, the ReadMe.txt created by the AppWizard was removed by this commit

- iss: Removes pre-compiled headers - adfbeb85dcfa9466b72eebb8d1bd8eb7728bab79
  No need to use the pre-compiled headers in InstallerHelper, removing it, in order to keep the project lean.

- iis: Moves installer to InstallerHelper - 6adf25667dd4bfa33010bd6d8ae3d35046a69967
  To organize the folder the Installer application was renamed to installer helper. It is not the real installer, it is just an helper which is executed during the installation phase.

- iss: Removes fart dependencies - 8c3b8d81b613aaa38f28472af1eb26c90c7fc9da
  This commit removes the dependency of the fart.exe utility. The utility was responsible to rename contents inside some dependencies build files. Those modifications are not longer needed.

- iss: Better err handling in build scripts. - 192599bf63b6ae5aa08e4536a90d5d0a17f969f7
  Now checking for errors in every step of the build phase

- iis: Moves build_module.bat to build_modsecurity.bat - e25c6b2e85ced7beba4d41867dbdf30e9c1286d3
  The build_modsecurity.bat is now on the iis sub-directory, not in the dependencies anymore. Its content was also changed fixing all the paths.


- iis: Identifies arch before unzip apache - cf5de78dfb9fffd21edf17af9e1db8f2fd83c804
  Currently we need the Apache binary which could be used in 32 or 64 bits. This patch makes usage of 'cl' to identify which architecture is set.

- iis: Renamves winbuild to dependencies - 1447766e816a896e88c9c8f053fcc3f62797bac1
  Since the directory becomes all about dependencies there is no need to call it winbuild anymore.

- iis: Removes unnecessary files from winbuild dir - 9f8cbf6ed8034ba42aa4967699308df09864fd18
  Those .mak files seems to be part of an old build system. Since the script are now working fine, this commit removes all those .mac files and also a CMakeList.txt and the Makefile.win.

- iis: Improves the iis build system - b277e538f28c87c81c1b50925dd8b82996b88294
  Now checking for common errors while building. Refactoring on the build scripts, now there is this build_dependencies.bat script on the iis sub-folder. By calling this script all the dependencies should be build under the winbuild/. This commit also removes build scripts that were not needed anymore.

- iis: Fixes the vcxproj file - a946a163f0ad822c760af80ca32dda61f0e6b2a9
  Versions of the dependencies were changed, as long as the version of the Visual Studio, now 12.

- iis: Removes unecessary files from the build system - 26738d2e34bcc7620047bd23180e0e26a64c71ee
  The following files were removed:
  * VCVarsQueryRegistry.bat
  * vcvars64.bat
  * vsvars32.bat
The visual studio files can be called direcltly, not necessary to distribute those files, at least in VS12.

- iss: Changes httpd version 2.4.6 - 0a772cb0748aa51a01800e0473309b9de792b456
  Apache version was changed to 2.4.6 to sync with the current apache lounge version.

- iis: Changes the version of the dependencies - 3e6fb41d36b7a5e98a55d8f52b88b29d1bd50b64
  * pcre from 8.30 to 8.33
  * zlib from 1.2.7 to 1.2.8
  * libxml2 from 2.7.7 to 2.9.1
  * curl from 7.24 to 7.33.0

- Removes standalone/Makefile.in - e3c19d53d23c48fea337aae76a87b2a85c36a1f1
  Makefile.in is recommended to be in the repository whenever it is edit manually, in our case the automatically generated Makefile.in is ok.


Bug Fixes:

- test: Avoids conflict of fuctions definition - cef72855e4106ce29e1d39103ebf9eb9ab28f17e

- test: Makes the unit tests to work again - cc982ae42ec86c79a67be1a01c6ee35fb06c272c
  The unit tests was not working due to lack update. This patch adds the necessary stuff to have it work again.

- iis: Avoids directory link while building - ad330a44bfa39430cf6340cb52971568cccdf1d6
  Build scripts was creating links allowing the project to be loaded into Visual Studio without care about the dependencies versions. Sometimes windows refuse to delete those links leading the script to fail. This patch moves the sources directories instead of create links to it.

- QA: Avoids the utilization of 3rd filedescriptor - 69c5ccac662f4e11a6eefd54a3e912583c067b9d
  No need to use a 3rd description on the quality check scripts. Stderr is now redirected to stdout and filtered as needed.

- Supports WarningCountingShellCommand in cppcheck and vera - baaf502363e68c3240b60adb7f7c91f5b4f0ba03
  WarningCountingShellCommand allow us to have some measurements on the buildbot waterfall.

- iis: Using base_rules instead of activated_rules - 7b1537058fa451e0df7098cd907ef19f04102f9d

- iis: Fix inet_pton build problem - a4202146b8d26b6615bbab986383fe0afae60d77
  There is a function named inet_pton on windows API, with different signature. This patch just override the windows function and point the inet_pton to our implementation.

- iis: Adds Wix installer xml file.c - b32cb7d9ab397160f0154aa4bd4e9638658b41e6
  This commit adds the Wix template to our git repository.

- iis: build_modsecurity.bat fixies - 7e03e3f840375ed682c35a5bb67932461cc77013
  This commit enable a cleanup on the mod_security build directory avoiding symbols with different architectures.

- iis: Fix mlogc build on windows - 9b7663fa79377a0685130a019916d810f31e7478
  The libcurl path was not pointing to the correct directory

- Fix #154, Uses addn instead of apr_table_setn - 1734221d9d3a78f9aafd68e35717da9ee1a4fe51
  The headers are represented in the format of an apr_table, which is able to handle elements with the same key, however the function apr_table_setn checks if the key exists before add the element, if so it replaces the old value with the new one. This was making our implementation to just keep the last added Cookie. The apr_table_addn function, which is now used, just add a new item without check for olders one.

- Merge pull request #579 from zimmerle/revert_139 - 61e54f2067ae760808359926ff91d57275df1aac
  Revert merge request #139

- Revert "Merge pull request #139 from chaizhenhua/remotes/trunk" - 7f7d00fa2c364716691df1b45779304b24a0debb
  This reverts commit 10fd40fb0d06f6c577d870b6f15d2f6e2a3a5b1b, reversing changes made to 414033aafa94cd50c9b310afd3f164740caccc94.

- Merge pull request #578 from client9/remotes/trunk - b0c3977845f60747b15ae10531b7d20355a22627
  libinjection sync to v3.8.0

- libinjection sync - a5f175d79fac1e69124da4e1e227b622e7e233d7

- Merge pull request #152 from client9/remotes/trunk - 88ebf8a0bdbc4db1be76f3a2e70df77cc52a5925
  Sync to libinjection v3.7.1

- libinjection sync - fcb6dc13ed6efb066fb9b70405eecab8b83a2d96

- libinjection sync - f52242a013f301ca5c17e59b662124833cb7cc6d

- Merge pull request #148 from zimmerle/bugfix_charset_missing_string_terminator - b76e26d81ddafc2b99bffad53d1426f8fd33080a
  Bugfix: missing string terminator while mounting the charset (nginx)

- Bugfix: missing string terminator while mounting the charset (nginx) - ff19dcd5c53d4af61d0a9397d4616f47f80ee207
  The charset in headers is mounted using ngx_snprintf which does not place the string terminator. This patch adds the terminator at the end of the string. The size was correctly allocated, just missing the terminator.

- Merge pull request #141 from client9/remotes/trunk - 9a630eea23a7ead4e77617c86dc937fd7a421a57
  libinjection sync to v3.6.0

- libinjection sync - 11217207e8f2e0cf15742273836399866971071a

- Fix Chunked string case sensitive issue - CVE-2013-5705 - f8d441cd25172fdfe5b613442fedfc0da3cc333d

- Revert "Fix Chuncked string case sensitive issue" - 3901128f17e0763ac1a260106b79859d2aad6d90
  This reverts commit 16a815a3c2735f62238ef99af26090a2b8430d3d.

- Fix Chuncked string case sensitive issue - 16a815a3c2735f62238ef99af26090a2b8430d3d

- Merge pull request #139 from chaizhenhua/remotes/trunk - 10fd40fb0d06f6c577d870b6f15d2f6e2a3a5b1b
  Fixed fd leackage after reload

- Merge pull request #138 from client9/remotes/trunk - 414033aafa94cd50c9b310afd3f164740caccc94
  libinjection sync

- Fixed fd leackage after reload - e0993fcd7a166ce9e1a279a47d050af1311d9001

- libinjection sync - 2268626c20260e88cab9b7830f8a06101fa7172a

- Fix logical disjunction and conjunction issues - 7e0a9ecf7d492e85650671a0cfcfd53e5f15df2c


23 Jul 2013 - 2.7.5
-------------------
Improvements:

    * SecUnicodeCodePage is deprecated. SecUnicodeMapFile now accepts the code page as a second parameter.

    * Updated Libinjection to version 3.4.1. Many improvements were made.

    * Severity action now supports strings (emergency, alert, critical, error, warning, notice, info, debug).

Bug Fixes:

    * Fixed utf8toUnicode tfn null byte conversion.

    * Fixed NGINX crash when issue reload command.

    * Fixed flush output buffer before inject modified hashed response body.

    * Fixed url normalization for Hash Engine.

    * Fixed NGINX ap_unixd_set_global_perms_mutex compilation error with apache 2.4 devel files.

Security Issues:

10 May 2013 - 2.7.4
-------------------
Improvements:

    * Added Libinjection project http://www.client9.com/projects/libinjection/ as a new operator @detectSQLi. (Thanks Nick Galbreath).

    * Added new variable SDBM_DELETE_ERROR that will be set to 1 when sdbm engine fails to delete entries.

    * NGINX is now set to STABLE. Thanks chaizhenhua and all the people in community who help the project testing, sending feedback and patches.

Bug Fixes:

    * Fixed SecRulePerfTime storing unnecessary rules performance times.

    * Fixed Possible SDBM deadlock condition.

    * Fixed Possible @rsub memory leak.

    * Fixed REMOTE_ADDR content will receive the client ip address when mod_remoteip.c is present.

    * Fixed NGINX Audit engine in Concurrent mode was overwriting existing alert files because a issue with UNIQUE_ID.

    * Fixed CPU 100% issue in NGINX port. This is also related to an memory leak when loading response body.

Security Issues:

    * Fixed Remote Null Pointer DeReference (CVE-2013-2765). When forceRequestBodyVariable action is triggered and a unknown Content-Type is used,
      mod_security will crash trying to manipulate msr->msc_reqbody_chunks->elts however msr->msc_reqbody_chunks is NULL. (Thanks Younes JAAIDI).

28 Mar 2013 - 2.7.3
-------------------

  * Fixed IIS version race condition when module is initialized.

  * Fixed IIS version failing config commands in libapr.

  * Nginx version is now RC quality. The rule engine should works for all phases.
    We fixed many issues and missing features (for more information please check jira).
    Code is running well with latest Nginx 1.2.7 stable.
    Thanks chaizhenhua for your help.

  * Added MULTIPART_NAME and MULTIPART_FILENAME. Should be used soon by CRS
    and will help prevent attacks using multipart data.

  * Added --enable-htaccess-config configure option. It will allow the follow directives
    to be used into .htaccess files when AllowOverride Options is set:

        - SecAction
        - SecRule

        - SecRuleRemoveByMsg
        - SecRuleRemoveByTag
        - SecRuleRemoveById

        - SecRuleUpdateActionById
        - SecRuleUpdateTargetById
        - SecRuleUpdateTargetByTag
        - SecRuleUpdateTargetByMsg

  * Improvements in the ID duplicate code checking. Should be faster now.

  * SECURITY: Added SecXmlExternalEntity (On|Off - default it Off) that will disable
    by default the external entity load task executed by LibXml2. This is a security issue
    [CVE-2013-1915] reported by Timur Yunusov, Alexey Osipov (Positive Technologies).

21 Jan 2013 - 2.7.2
-------------------

  * IIS version is now stable.

  * Fixed IIS version does not pass through POST data to ASP.NET when SecRequestBodyAccess
    is set to On (MODSEC-372).

  * Fixed IIS version HTTP Request Smuggling protection does not work (MODSEC-344).

  * Fixed IIS version PHP Injection Attack (958976) protection does not work (MODSEC-346).

  * Fixed IIS version Request limit protections are not working (MODSEC-349).

  * Fixed IIS version Outbound protections are not working (MODSEC-350).

  * Added IIS version better installer.

  * NGINX version removed ModSecurityPassCommand (Thanks chaizhenhua).

  * Fixed NGINX version ngx_http_read_client_request_body returned unexpected buffer type (Thanks chaizhenhua).

  * Fixed NGINX version INCS config directories on fedora (Thanks chaizhenhua).

  * Added NGINX version Added drop action for nginx (Thanks chaizhenhua).

  * Fixed bug in cpf_verify operator (Thanks Hideaki Hayashi).

  * Fixed build modsecurity under Arch Linux.

  * Fixed make test crashing when JIT pcre is enabled.

  * Fixed better cookie separator detection code.

  * Fixed mod_security displaying wrong ip address in error.log using apache 2.4 and mod_remoteip.

  * Fixed mod_security was not compiling when use apr without ipv6 support.

  * Fixed mod_security was not compiling when use lua 5.2.

  * Fixed issue when execute make install under Solaris.

  * Fixed ipmatchf operator was not working as expected.

01 Nov 2012 - 2.7.1
-------------------

  * Changed "Encryption" name of directives and options related to hmac feature to "Hash".

    SecEncryptionEngine       to SecHashEngine
    SecEncryptionKey          to SecHashKey
    SecEncryptionParam        to SecHashParam
    SecEncryptionMethodRx     to SecHashMethodRx
    SecEncryptionMethodPm     to SecHashMethodPm
    @validateEncryption       to @validateHash
    ctl:EncryptionEnforcement to ctl:HashEnforcement
    ctl:EncryptionEngine      to ctl:HashEngine

  * Added a better random bytes generator using apr_generate_random_bytes() to create
    the HMAC key.

  * Fixed byte conversion issue during logging under Linux s390x platform.

  * Fixed compilation bug with LibXML2 2.9.0 (Thanks Athmane Madjoudj).

  * Fixed parsing error with modsecurity-recommended.conf and Apache 2.4.

  * Fixed DROP action was disabled for Apache 2 module by mistake.

  * Fixed bug when use ctl:ruleRemoveTargetByTag.

  * Fixed IIS and NGINX modules bugs.

  * Fixed bug when @strmatch patterns use invalid escape sequence (Thanks Hideaki Hayashi).

  * Fixed bugs in @verifySSN (Thanks Hideaki Hayashi).

  * The doc/ directory now contains the instructions to access online documentation.

15 Oct 2012 - 2.7.0
-------------------

  * Fixed Pause action should work as a disruptive action (MODSEC-297).

  * Fixed Problem loading mod_env variables in phase 2 (MODSEC-226).

  * Fixed Detect cookie v0 separator and use it for parsing (MODSEC-261).

  * Fixed Variable REMOTE_ADDR with wrong IP address in NGINX version (MODSEC-337).

  * Fixed Errors compiling NGINX version.

  * Added Include directive into standalone module. IIS and NGINX module should
    support Include directive like Apache2.

  * Added MULTIPART_INVALID_PART flag. Also used in rule id 200002 for multipart strict
    validation. https://www.sec-consult.com/fxdata/seccons/prod/temedia/advisories_txt/20121017-0_mod_security_ruleset_bypass.txt).

  * Updated Reference Manual.

25 Sep 2012 - 2.6.8
-------------------

  * Fixed ctl:ruleRemoveTargetByID order issue (MODSEC-333). Thanks to Armadillo Dasypodidae.

  * Fixed variable HIGHEST_SEVERITY incorrectly gets reset in a chain rule (MODSEC-315). Thanks to Valery Reznic.

10 Sep 2012 - 2.7.0-rc3
-------------------

 * Fixed requests bigger than SecRequestBodyNoFilesLimit were truncated even engine mode was detection only.

 * Fixed double close() for multipart temporary files (Thanks Seema Deepak).

 * Fixed many small issues reported by Coverity Scanner (Thanks Peter Vrabek).

 * Fixed format string issue in ngnix experimental code. (Thanks Eldar Zaitov).

 * Added ctl:ruleRemoveTargetByTag/Msg and removed ctl:ruleUpdateTargetByTag/Msg.

 * Added IIS and Ngnix platform code.

 * Added new transformation utf8toUnicode.

23 Jul 2012 - 2.6.7
-------------------

 * Fixed explicit target replacement using SecUpdateTargetById was broken.

 * The ctl:ruleUpdateTargetById is deprecated and will be removed for future versions since
   there is no safe way to use it per-request.

 * Added ctl:ruleRemoveTargetById that can be used to exclude targets to be processed per-request.

22 Jun 2012 - 2.7.0-rc2
-------------------

 * Fixed compilation errors and warnings under Windows platform.

 * Fixed SecEncryptionKey was not working as expected.

08 Jun 2012 - 2.7.0-rc1
-------------------

 * Added SecEncryptionEngine. Initial crypt engine support, at the momment it will sign some Html
   and Response Header options.

 * Added SecEncryptionKey to define the a rand or static key for crypt engine.

 * Added SecEncryptionParam to define the new parameter name.

 * Added SecEncryptionMethodRx used with a regular expression to inspect the html in response
   body/header and decide what to protect.

 * Added SecEncryptionMethodPm used with multiple or single strings to inspect the html in response
   body/header and decide what to protect.

 * Added ctl encryptionEngine as a per transaction version of SecEncryptionEgine diretive.

 * Added ctl encryptionEnforcement that will allow the engine to sign the data but the enforcement is
   disabled.

 * Added validateEncryption operator to enforce the signed elements.

 * Added rsub operator supports the syntax |hex| allowing users to use special chars like \n \r.

 * Added SecRuleUpdateTargetById now supports id range.

 * Added SecRuleUpdateTargetByMsg and its ctl version (Thanks Scott Gifford).

 * Added SecRuleUpdateTargetByTag and its ctl version (Thanks Scott Gifford).

 * Added SecRulePerfTime when greater than zero it will fill rule id's execution time into PERF_RULE
   and log id=usec information in the new Perf-rule-info: line in part H.

 * Added PERF_RULES variable that contains rule execution time.

 * Added Engine-mode: section in part H.

 * Added ruleRemoveByMsg ctl version.

 * Added removeCommentsChar and removeComments now can work with <!-- --> style.

 * Added SecArgumentSeparator and SecCookieFormat can be used in different scope locations.

 * Added Rules must have ID action and must be numeric.

 * Added The use of tfns are deprecated in SecDefaultAction. Should be forbid in the future.

 * Added Macro expansion support to the action pause.

 * Added IpmatchFromFile/IpmatchF operator.

 * Added New setrsc action, the RESOURCE collection used SecWebAppId Name Space

 * Added Configure option --enable-cache-lua that allows reuse of Lua VM per transaction.
   It will only take any effect when ModSecurity has multiple scripts to run per transaction.

 * Added Configure option --enable-pcre-jit that allows ModSecurity regex engine to use PCRE Jit support.

 * Added Configure option --enable-request-early that allows ModSecurity run phase 1 in post_read_request hook.

 * Added RBL operator now support the httpBl api (http://www.projecthoneypot.org/httpbl_api.php).

 * Added SecHttpBlKey to be used with httpBl api.

 * Added SecSensorId will specify the modsecurity sensor name into audit log part H.

 * Added aliases to phase:2 (phase:request), phase:4 (phase:response) and phase:5 (phase:logging).

 * Added USERAGENT_IP variable. Created when Apache24 is used with mod_remoteip to know the real
   client ip address.

 ^ Added new rule metadata actions ver, maturity and accuracy. Also included into RULE collection.

 * Updated Reference manual into doc/ directory.

 * Fixed Variable DURATION contains the elapsed time in microseconds for compatible reasons with apache and
   other variables.

 * Fixed Preserve names/identity of the variables going into MATCHED_VARS.

 * Fixed Redirect macro expansion does not work in SecDefaultAction when SecRule uses block action.

 * Fixed rsub operator does not work as expect if regex contains parentheses (Thanks Jerome Freilinger).

 * Current Google Safe Browsing implementation is deprecated. Google changed the API and does not allow
   anymore the malware database for download.

08 Jun 2012 - 2.6.6
-------------------

 * Added build system support for KfreeBSD and HURD.

 * Fixed a multipart bypass issue related to quote parsing
   Credits to  Qualys Vulnerability & Malware Research Labs (VMRL).

20 Mar 2012 - 2.6.5
-------------------

 * Fixed increased a specific message debug level in SBDM code (MODSEC-293).

 * Cleanup build system.

09 Mar 2012 - 2.6.4
-------------------

 * Fixed Mlogc 100% CPU consume (Thanks Klaubert Herr and Ebrahim Khalilzadeh).

 * Fixed ModSecurity cannot load session and user sdbm data.

 * Fixed updateTargetById was creating rule unparsed content making apache memory grow.

 * Code cleanup.

23 Feb 2012 - 2.6.4-rc1
-------------------

 * Fixed @rsub adding garbage data into stream variables.

 * Fixed regex for section A into mlogc-batch-load.pl (Thanks Ebrahim Khalilzadeh).

 * Fixed logdata cuts message without closing it with final chars.

 * Added sanitizeMatchedBytes support to verifyCPF, verifyCC and verifySSN.


06 Dec 2011 - 2.6.3-rc1
-------------------

* Fixed MATCHED_VARS does not correctly handle multiple VARS with the same name.

* Fixed SDBM garbage collection was not working as expected, increasing the size of files.

* Fixed wrong timestamp calculation for some time zones in log files.

* Fixed SecUpdateTargetById failed to load multiple VARS (MODSEC-270).

* Fixed Reverted hexDecode for hexEncode compatibility reason.

* Added SecCollectionTimeout to set collection timeout, default is 3600.

* Added sqlHexDecode transformation to decode sql hex data. Thanks Marc Stern.

30 Sep 2011 - 2.6.2
-------------------

 * Fixed hexDecode test during make.

 * Updated the reference manual into doc/ directory.

5 Sep 2011 - 2.6.2-rc1
-------------------

 * Added support to macro expansion for rx operator.

 * Added new transformations removeComments and removeCommentsChars

 * Fixed colletion names are not case-sensitive anymore.

 * Fixed compilation errors with apache 2.0.

 * Fixed build system was not using some libraries CFLAGS.

 * Fixed check for valid hex values into hexDecode transformation.

 * Fixed ctl:ruleUpdateTargetById appending multiple targets.

18 Jun 2011 - 2.6.1
-------------------

 * Updated the reference manual into doc/ directory.

11 Jul 2011 - trunk
-------------------

 * Add HttpBl support to rbl operator.

30 Jun 2011 - 2.6.1-rc1
-------------------

 * Fixed SecUploadFileMode doesn't work with the new build system.

 * Fixed building with Lua library (Thanks Diego Elio).

 * Fixed some ./configure --enable* features not being enabled in compilation time.

 * Improvements on GSB database add/search operations.

 * Log part K was removed from modsecurity.conf-recommended.

 * Added SecUnicodeMapFile directive. Must be use to load the unicode.mapping file.

 * Added SecUnicodeCodePage directive. Used to define the unicode code page. There are a few already available:

    1250  (ANSI - Central Europe)
    1251  (ANSI - Cyrillic)
    1252  (ANSI - Latin I)
    1253  (ANSI - Greek)
    1254  (ANSI - Turkish)
    1255  (ANSI - Hebrew)
    1256  (ANSI - Arabic)
    1257  (ANSI - Baltic)
    1258  (ANSI/OEM - Viet Nam)
    20127 (US-ASCII)
    20261 (T.61)
    20866 (Russian - KOI8)
    28591 (ISO 8859-1 Latin I)
    28592 (ISO 8859-2 Central Europe)
    28605 (ISO 8859-15 Latin 9)
    37    (IBM EBCDIC - U.S./Canada)
    437   (OEM - United States)
    500   (IBM EBCDIC - International)
    850   (OEM - Multilingual Latin I)
    860   (OEM - Portuguese)
    861   (OEM - Icelandic)
    863   (OEM - Canadian French)
    865   (OEM - Nordic)
    874   (ANSI/OEM - Thai)
    932   (ANSI/OEM - Japanese Shift-JIS)
    936   (ANSI/OEM - Simplified Chinese GBK)
    949   (ANSI/OEM - Korean)
    950   (ANSI/OEM - Traditional Chinese Big5)

    Also mapping some extra unicode chars defined at http://tools.ietf.org/html/rfc3490#section-3.1

 * Fixed SecRequestBodyLimit was truncating the real request body.

18 May 2011 - 2.6.0
-------------------

 * Added SecWriteStateLimit for Slow Post DoS mitigation.

 * Fix problem when buffering in input filter.

 * Fix memory leak when use MATCHED_VAR_NAMES.


2 May 2011 - 2.6.0-rc2
-------------------

 * Added code optimizations - thanks Diego Elio.

 * Added support to AIX and HPUX in the build system (untested).

 * Renamed decodeBase64Ext to base64DecodeExt.

 * Build system improvements - thanks Diego Elio.

 * Improvements on gsblookup parser.

 * Fixed input filter bug when upload files and SecStreamInBodyInspect is enabled.

 * Logging improvements and bug fix.

 * Remove extra useless files when make clean and maintainer-clean

18 Apr 2011 - 2.6.0-rc1
-------------------

 * Replaced previous GPLv2 License to Apachev2.

 * Added Google Safe Browsing lookups operator and directive. It should be
   used to extract and lookup urls from http packets.

 * Added Data Modification operator. It must be used with STREAM_* variables
   to replace/add/edit any data from http bodies.

 * Added STREAM_OUPUT_BODY and STREAM_INPUT_BODY variables to work with data
   modification operators.

 * Added fast ip address operator. It supports partial ip address, cidr for
   IPv4 and IPv6. Thanks Tom Donovan.

 * Added new sensitive data tracking verifyCPF and verifySSN.

 * Added MATCHED_VARS and MATCHED_VARS_NAMES. It is similiar to MATCHED_VAR,
   but now we should see all matched variables.

 * Added UNIQUE_ID variable. It holds the data created my mod_unique_id.

 * Added new tranformation cmdline. Thanks Marc Stern.

 * Added new exception handling operators and directives. It should help users
   reduce FN and FPs. The directives SecRuleUpdateTargetById, SecRuleRemoveByTag
   and its ctl actions were included.

 * Added SecStreamOutBodyInspection and SecStreamInBodyInspection to enable STREAM_*
   variables.

 * Added SecGsbLookupDB used to load Google Safe Browsing malware databse into
   memory.

 * Added the directive SecInterceptOnError to control what to do if a rule returns
   values less than zero.

 * Improvements in DetectionOnly engine mode. Also added SecRequestBodyLimitAction
   to control what to do if the engine receive a http request over a hard limit.
   Note that there is now many combinations with SecRuleEngine and the limit action
   directives for response and request data. Please see the reference manual.

 * Improvements under RBL operator. It now will parse return code values for some
   RBL lists.

 * Added new Log Part J. It should log some informations about uploaded files.

 * Added new sanitizeMatchedBytes action. It will give more flexibilty for user to sanitize
   logged data, also improving peformance when sanitize big amount of data.

 * Improvements on Logging phase. It is possible now see full chains, distinguish between
   simple rules, chain starters and chain nodes.

 * Improvements on AutoTools usage.

 * Improvements on pattern matching operators, pmf, pm and strmatch now supports more flexible
   input data allowing any kind of special char.

 * Improvements on SecRuleUpdateActionById to update chain nodes.

 * Many bugs were fixed. Please see the ModSecurity Jira for more details


19 Mar 2010 - trunk
-------------------

 * Added SecDisableBackendCompression, which disabled backend compression
   while keeping the frontend compression enabled (assuming mod_deflate
   in installed and configured in the proxy). [Ivan Ristic]

 * Added REQUEST_BODY_LENGTH, which contains the number of request body
   bytes read. [Ivan Ristic]

 * Integrate with mod_log_config using the %{VARNAME}M format string.
   (MODSEC-108) [Ivan Ristic]

 * Replaced the previous time-measuring mechanism with a new one, which
   provides the following information: request time, request duration,
   phase duration (for all 5 phases), time spent dealing with persistent
   storage, and time spent on audit logging. The new information is now
   available in the Stopwatch2 audit log header. The Stopwatch header
   remains for backward compatiblity, although it now only includes
   the request time and request duration values. Added the following
   variables: PERF_COMBINED, PERF_PHASE1, PERF_PHASE2, PERF_PHASE3,
   PERF_PHASE4, PERF_PHASE5, PERF_SREAD, PERF_SWRITE, PERF_LOGGING,
   PERF_GC. [Ivan Ristic]

 * Added DURATION, which contains the time ellapsed since the beginning
   of the current transaction, in milliseconds. [Ivan Ristic]

 * Adjusted phase 5 to execute just prior to mod_log_config. This should
   allow phase 5 rules to to implement conditional logging, as well as
   pave support for allowing access to all ModSecurity variables from
   mog_log_config. [Ivan Ristic]

 * Added the URLENCODED_ERROR flag, which is raised whenever invalid URL
   encoding is encountered in the query string or in the request body
   (but only if URLENCODED request body processor is used). (MODSEC-111)
   [Ivan Ristic]

 * Removed the obsolete PDF UXSS functionality. (MODSEC-96) [Ivan Ristic]

 * Renamed normalisePath to normalizePath and normalisePathWin to
   normalizePathWin. Kept the previous names for backward compatibility.
   (MODSEC-103) [Ivan Ristic]

 * Moved phase 1 to be run in the same Apache hook as phase 2. This means
   that you can now have phase 1 rules in <Location> tags and, more
   importantly, override server configuration in <Location> and others.
   (MODSEC-98) [Ivan Ristic]

 * Renamed the sanitise family of actions to sanitize. Kept the old variants
   for backward compatibility. (MODSEC-95) [Ivan Ristic]

 * Improve the logging of the ctl action. (MODSEC-99) [Ivan Ristic]

 * Cleanup build files that were from the Apache source.
jperkin pushed a commit that referenced this pull request Feb 15, 2014
Serf 1.3.4 [2014-02-08, from /tags/1.3.4, rxxxx]
  Fix issue #119: Endless loop during ssl tunnel setup with Negotiate authn
  Fix issue #123: Can't setup ssl tunnel which sends Connection close header
  Fix a race condition when initializing OpenSSL from multiple threads (r2263)
  Fix issue #138: Incorrect pkg-config file when GSSAPI isn't configured
jperkin pushed a commit that referenced this pull request Mar 14, 2014
= Changes in 2.3.2 =

  January 5, 2013 - version 2.3.2

  * Changes

    * #138 Revert Timeout change unintentionally included in v2.3.1.  It's
      reported that the change causes background processes not terminated
      properly.

= Changes in 2.3.1 =

  January 1, 2013 - version 2.3.1

  * Changes

    * #137 Signing key is expiring for cacert_sha1.p7s.
      Deleted p7s signature check for default cacerts.  Sorry for many troubles
      in the past. This feature is not useful without having online/real-time
      CA certs update but I don't think I can implement it in near future.
      Users depend on this signature check (who puts cacert.p7s in R/W
      filesystem and ssl_config.rb in R/O filesystem) should take care the
      tampering by themself.

  * Bug fixes

    * #122 Support IPv6 address in URI


= Changes in 2.3.0 =

  October 10, 2012 - version 2.3.0

    * Features

      * Added debug mode CLI.  bin/httpclient is installed as CLI.
          Usage: 1) % httpclient get https://www.google.co.jp/ q=ruby
          Usage: 2) %httpclient
        For 1) it issues a GET request to the given URI and shows the wiredump
        and the parsed result.  For 2) it invokes irb shell with the binding
        that has a HTTPClient as 'self'.  You can call HTTPClient instance
        methods like;
          > get "https://www.google.co.jp/", :q => :ruby

      * #119 Addressable gem support (only if it exists); should handle IRI
        properly.

    * Bug fixes

      * #115 Cookies couldn't work properly if the path in an URI is ommited.
      * #112, #117 Proper handling of sized IO (the IO object that responds to
        :size) for chunked POST. HTTPClient did read till EOF even if the
        given IO has :size method.
      * Handle '303 See Other' properly.  RFC2616 says it should be redirected
        with GET.
      * #116 Fix "100-continue" support.  It was just ignored.
      * #118 Support for boolean values when making POST/PUT requests with
        multiipart/form Content-Type.
      * #110 Allows leading dots in no_proxy hostname suffixes.
jperkin pushed a commit that referenced this pull request Mar 14, 2014
== Ruby-GNOME2 1.2.5: 2013-03-28

Crash bug fix release!

=== Changes

==== All

  * Fixes
    * Fixed crash bugs.
      [GitHub #138] [Reported by Takuma Nakajima]

=== Thanks

  * Takuma Nakajima

== Ruby-GNOME2 1.2.4: 2013-03-24

Ruby/WebKitGtk2 addition release!

=== Changes

==== All

  * Improvements
    * Start mswin64 support. (But it is not completed yet.)
      [GitHub #135] [Patch by usa]

==== Ruby/GLib2

  * Improvements
    * Reduce needless GBoxed object copy.

==== Ruby/GdkPixbuf2

  * Fixes
    * Fix build error by a typo.

==== Ruby/GtkSourceView2

  * Improvements
    * Support auto RPM install on CentOS 6.

==== Ruby/GObjectIntrospection

  * Improvements
    * Add method name to arguments validation failure message.
    * Support specific version loading.

==== Ruby/GTK3

  * Improvements
    * [windows] Add gschemas.compiled.
      [ruby-talk:406026] [Reported by Regis d'Aubarede]

==== Ruby/WebKitGtk2

  * New!
    [GitHub #136] [Patch by eumario]

=== Thanks

  * usa
  * Regis d'Aubarede
  * eumario
jperkin pushed a commit that referenced this pull request Mar 14, 2014
Changelog:

-------------------------------------------------------------
mp3splt-gtk version 0.8.2

- fixed important bug in mp3splt-gtk: split using cue file was not splitting the last part
- fixed tags encoding issue in mp3splt-gtk: encode in UTF-8 tags if not valid UTF-8
- implemented "prelisten a section to its ending splitpoint" in mp3splt-gtk (feature request #98)
- libmp3splt check is now more correct and checks for the exact version of libmp3splt with = instead
of >=; will be changed to >= when final version of libmp3splt will be released
- now using pkg-config instead of mp3splt.m4 (bug #145)
- corrected build files (configure.ac, Makefile.am, ...) and check using 'make distcheck' (bug #147)

-------------------------------------------------------------
mp3splt-gtk version 0.8.1

- fixed important bug: application was crashing when pushing the split button without any
splitpoint (libmp3splt)
- fixed important bug: split by time was in hundreths of seconds instead of seconds

-------------------------------------------------------------
mp3splt-gtk version 0.8

- added tags edition from the splitpoints table - closes feature #92
- added cloning features for mass copying of tags using right click on the splitpoints table
- enhanced the CUE export to export the tags as REM comments and also the splitpoint names
- automatically save & restore splitpoints in '~/.mp3splt-gtk/splitpoints.cue'
- better amplitude wave display (wave does not "shake" anymore)
- done issue #37 & #138 - nicer GUI for the option 'same output directory as the input file'
- fixed amplitude wave to be more precise with ogg vorbis files (libmp3splt)
- fixed important bug on mp3splt-gtk 'Queue to player' button
- fixed bug #128 - hash symbol in filename breaks the player
- done feature #38 - reorder filenames in mp3splt-gtk (description_here_partXX)
- fixed bug #133 - updated GPLv2 COPYING file
- fixed bug #137 - autogen.sh should run libtoolize before aclocal/automake
- fixed bug #143 - be able to add splitpoint at the end from the player
- fixed bug #136 - various compilation issues
- fixed issue #90 - added back the icons to split preview and play preview in the splitpoints table
- added a lot of tooltip and GUI renamings
- done feature #91 - amplitude wave now persists in preferences
- added one more interpolation level for the amplitude wave (level 6)
- more precise wave preview in preferences
- fixed bug when detecting the input tags version - output had no tags when the input only had ID3v1
(libmp3splt)
- fixed bug #141 - when input file is a symlink and output directory is the one of the input file
(libmp3splt)
- amplitude more precise with ogg vorbis files (libmp3splt)
- fixed bug on mp3 trim silence scan: last frame was skipped (libmp3splt)

-------------------------------------------------------------
mp3splt-gtk version 0.7.3

- redesigned the mp3splt-gtk user interface
- added option to specify the wave quality in the parameters (for performance reasons)
- wave interpolation is now much correct - we use the douglas peucker algorithm instead of the previous one which was stupid
- added gray areas where no splitpoints - regarding #3520736
- added seek key shortcuts to the player - #1811400 & #3528001
- heavy refactoring of mp3splt-gtk code
- fixed bug: removing TLEN id3v2 tag from the split files (libmp3splt)
- fixed bug #3530488 - regression introduced with ogg multiple logical streams (libmp3splt)

-------------------------------------------------------------
mp3splt-gtk version 0.7.2

- fixed an important bug of memory leak in player drawing when using GTK+-2
- fixed bug not showing icon and image in the about dialog
- fix for the '--disable-gtk3' option; also fixed the gtk 2.x/3.x check
- made some player graphic optimisations
- added player refresh rate option in Preferences->Player
- added expanders to the player history and player splitpoints view
- we don't need gtk 2 version >= 2.20; changed it to 2.18

-------------------------------------------------------------
mp3splt-gtk version 0.7.1

- added minimum track length option for silence scan - closes #2393766
- added gtk3 support (auto detection or --enable-gtk3, --disable-gtk3) - almost closes #3385903
(some tests still need to be done)
- fixed #3385841 - removed scrollkeeper warnings
- fixed #3385827 - added --disable-doxygen_doc
- fixed #3385829 - building doxygen documentation by itself + installing doxygen files
- fixed #3385833 - don't apply debugging flags or warnings flags by default:
added --enable-c-debug --enable-optimise --enable-extra-warnings
- added support for multiple ogg/vorbis logical streams (mail) (libmp3splt)
- fixed mp3 frame mode with skippoint when skippoint too small (on the same frame as previous) (libmp3splt)
- fixed several audacity labels issues (libmp3splt)
- fixed some regression regarding mp3splt v2.1c - removed some checks relative to the total
time - we cannot rely on the total time - for example with concatenated mp3s (libmp3splt)
jperkin pushed a commit that referenced this pull request Mar 14, 2014
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)
jperkin pushed a commit that referenced this pull request Mar 14, 2014
## python-markdown2 2.2.0

- [issue #135] Fix fenced code blocks odd rendering.
- [pull #138] specify shell in Makefile
- [pull #130] break-on-newline extra
- [pull #140] Allow html-classes for img
- [pull #122] Allow parentheses in urls
jperkin pushed a commit that referenced this pull request Mar 14, 2014
Release 3.1.2 - 2014/01/29
--------------------------

Improvements
^^^^^^^^^^^^

* [doc] Updated to caplitalized "Groonga" terms in documentation. [Patch by cosmo0920] [GitHub#136, #137, #138, #139, #140, #141, #142, #143, #144, #145, #146, #147, #148, #149, #150, #151]
* Supported to customize the value of lock timeout. See :doc:`/reference/api/global_configurations` about details.
  [groonga-dev,02017] [Suggested by yoku]
* [doc] Added description about the value of lock timeout.
* Enabled ``GRN_JA_SKIP_SAME_VALUE_PUT`` by default. In the previous releases, the value of
  this configuration is 'no'. This change affects reducing the size of Groonga database.
* Supported multiple indexes including a nested index and multiple keywords query.
  This change improves missing search results isssue when narrowing down by multiple keywords query.
* Added API to customize normalizer for snippet.

Fixes
^^^^^

* Fixed not to use index for empty query. This change enables you to search even though empty query.
  Note that this means that there is performance penalty if many empty records exist.
  [groonga-dev,02052] [Reported by Naoya Murakami]
* Fixed the behaviour about return value of "X || Y" and "X && Y" for adjusting to ECMAScript.
  In "X || Y" case, if either X or Y satisfy the condition, it returns X itself or Y itself instead of 1 or 0.
* In "X && Y" case, if X and Y satisfy the condition, it returns X itself instead of 1.
  if X doesn't satisfy the condition, it returns false instead of 0.
* Fixed to return null when no snippet is found. This change enables you to set the default value
  of :doc:`/reference/functions/snippet_html`. In such a purpose, use "snippet_html(XXX) || 'default value'".

Thanks
^^^^^^

* cosmo0920
* yoku
* Naoya Murakami
jperkin pushed a commit that referenced this pull request Mar 14, 2014
17 Dec 2013 - 2.7.7
-------------------
Fixes:

- Changed release version to 2.7.7
- Got the configure scripts inside the release tarball


16 Dec 2013 - 2.7.6
-------------------
Improvements:

- Organizes all Makefile.am - 1cde4d2dd9d96747536c1c25d06ba0677069477f
  Now using one file per line (sorted). This is the better way to handle it, since it reduces the possibility of merge conflicts.

- nginx: generates config file using configure input. - 351b9cc357d439e30ebd61d89a9e38ecf55c6827
  The nginx config file was looking for depedencies by its own, by doing that it was ignoring the options that were passed to configure script. This commit deletes this config file and adds a meta-config which is populated by configure whenever the standalone-module is enabled.

- nginx: adds lua support - da16d9e5d51d4ef8734687514a4e1368e7fb4284

- iis: Cosmetics fixies on sqli. - 5046c8327ea21c69b4c0d0c0057c692b05b09fef
  This is needed to get it compiled with VS2011 on Windows8

- Regression tests: makes configuration compatible with 2.2 and 2.4 (try 2) - ae252ee8767069363906e5a611dff487b799b839

- nginx: Trying apxs and apxs2 while compiling nginx module - 65d9272fdc353e1263567b60604542d377d19672

- nginx: Trying apxs and apxs2 while compiling nginx module - 35fd75d859e4a8873b8843da1db13e04a1b08140

- macos: Using glibtoolize instead of libtoolize - 751a9f4e45213cd69f00c62c71edc9d7ad99b82d

- regression-tests: makes configuration compatible with 2.2 and 2.4 - 6fc4cac37ab1be8d1232140042b58fe4bd93ee17

- Regression test: get it working with apache 2.4 - e9813cd0d9bfc5b0c9aa5832634ec1b39b805108
  Changes in httpd.conf.in to get it working with apache 2.4

- Code cosmetics. - 7366f35c1d80772d739b35da8faa972f92a72b97
  Changed to reduce the number of possible fails during Build Bot compilation.

- iis: Waiting for 5 seconds before move curl directory - 9bf2959c919587ebc63f5a1b8c0785da8927bff5
  Testing buildbot.

- Redefines unixd_set_global_mutex_perms on tests - f70f6f4281b806627e0cf0dbb9c84ae5864bdb16
  Avoding conflicts with the standalone implementation

- Adds verbose quality check - 388943440cc9b8c6fdea09f5e365a2e5a3e792e2
  Vera++ and ccpcheck are not outputing to the stderr instead stdout allowing the buildbot to extract some numbers about it.

- Adds support for coding style and quality check - b77e90152d119609ac78a7028383c3b79898b2cf
  Initial effort to get the code on shape. This will be executed by the buildbots as soon as they get ready for it.

- iis: New improvements on the Wix installer - 2ea5a74a7bfb00f21312e51e48aa6dac03d84600
  * Now the installation is divided in modules: ModSecurity and CRS.
  * Added default configuration
  * Configuration was moved to "Program Files" folder
  * Build_msi script now using candle available in %PATH%

- iis: Removes the installer helper dependency - 1a12648c9f6028f251af0f03c889397c7954b74c
  Now using appcmd directly with WiX instead of calling the installer helper.

- iis: Remove readme.html - 550d5aae21cba696cac1ce75ab8113e5255d5a59
  This HTML is about "Creating a Native Module for IIS7" not straight related to ModSecurity itself.

- iis: Adds batch script to compile Wix - a2c5fc831baf0b324ebb66b0f878dacf1ec2f808
  This batch script can be used to generate our msi installer.

- iis: Adds Wix installer resources - 3604763e15a665eb7a6ecae1f7e7c65cebbb1d17
  This is all about cosmetic changes.

- iss: Removes Post-Build event. - 28bbde1bb218b004654cb865fc8563d69b848dc2
  There was a copy on Post-Build event using a hard coded path. This patch removes this Post-Build event.

- iis: Relative paths on the VS project file - 368617ddb2443f9b6036f80a648d467d07c9a054
  There are a ModSecurityIIS solution and project files, those were using hard coded paths to meet the dependencies. As consequence of the last update in our build scripts, now we are able to built the dependencies and load it to our Visual Studio project using relative paths.

- iis: Adds release script - 9477118903861ce80c4c27cb581bf3462315e98e

- iis: fixies the Installer.cpp coding style - 79875b1af8e8571098345b91557bab9c06eb7c88

- iis: Removes AppWizard remade file - 91738f93bcc82b6ab756c550a66b6cf6af2fa9f8
  Apparently the AppWizard was used to generate part of this Installer, the ReadMe.txt created by the AppWizard was removed by this commit

- iss: Removes pre-compiled headers - adfbeb85dcfa9466b72eebb8d1bd8eb7728bab79
  No need to use the pre-compiled headers in InstallerHelper, removing it, in order to keep the project lean.

- iis: Moves installer to InstallerHelper - 6adf25667dd4bfa33010bd6d8ae3d35046a69967
  To organize the folder the Installer application was renamed to installer helper. It is not the real installer, it is just an helper which is executed during the installation phase.

- iss: Removes fart dependencies - 8c3b8d81b613aaa38f28472af1eb26c90c7fc9da
  This commit removes the dependency of the fart.exe utility. The utility was responsible to rename contents inside some dependencies build files. Those modifications are not longer needed.

- iss: Better err handling in build scripts. - 192599bf63b6ae5aa08e4536a90d5d0a17f969f7
  Now checking for errors in every step of the build phase

- iis: Moves build_module.bat to build_modsecurity.bat - e25c6b2e85ced7beba4d41867dbdf30e9c1286d3
  The build_modsecurity.bat is now on the iis sub-directory, not in the dependencies anymore. Its content was also changed fixing all the paths.


- iis: Identifies arch before unzip apache - cf5de78dfb9fffd21edf17af9e1db8f2fd83c804
  Currently we need the Apache binary which could be used in 32 or 64 bits. This patch makes usage of 'cl' to identify which architecture is set.

- iis: Renamves winbuild to dependencies - 1447766e816a896e88c9c8f053fcc3f62797bac1
  Since the directory becomes all about dependencies there is no need to call it winbuild anymore.

- iis: Removes unnecessary files from winbuild dir - 9f8cbf6ed8034ba42aa4967699308df09864fd18
  Those .mak files seems to be part of an old build system. Since the script are now working fine, this commit removes all those .mac files and also a CMakeList.txt and the Makefile.win.

- iis: Improves the iis build system - b277e538f28c87c81c1b50925dd8b82996b88294
  Now checking for common errors while building. Refactoring on the build scripts, now there is this build_dependencies.bat script on the iis sub-folder. By calling this script all the dependencies should be build under the winbuild/. This commit also removes build scripts that were not needed anymore.

- iis: Fixes the vcxproj file - a946a163f0ad822c760af80ca32dda61f0e6b2a9
  Versions of the dependencies were changed, as long as the version of the Visual Studio, now 12.

- iis: Removes unecessary files from the build system - 26738d2e34bcc7620047bd23180e0e26a64c71ee
  The following files were removed:
  * VCVarsQueryRegistry.bat
  * vcvars64.bat
  * vsvars32.bat
The visual studio files can be called direcltly, not necessary to distribute those files, at least in VS12.

- iss: Changes httpd version 2.4.6 - 0a772cb0748aa51a01800e0473309b9de792b456
  Apache version was changed to 2.4.6 to sync with the current apache lounge version.

- iis: Changes the version of the dependencies - 3e6fb41d36b7a5e98a55d8f52b88b29d1bd50b64
  * pcre from 8.30 to 8.33
  * zlib from 1.2.7 to 1.2.8
  * libxml2 from 2.7.7 to 2.9.1
  * curl from 7.24 to 7.33.0

- Removes standalone/Makefile.in - e3c19d53d23c48fea337aae76a87b2a85c36a1f1
  Makefile.in is recommended to be in the repository whenever it is edit manually, in our case the automatically generated Makefile.in is ok.


Bug Fixes:

- test: Avoids conflict of fuctions definition - cef72855e4106ce29e1d39103ebf9eb9ab28f17e

- test: Makes the unit tests to work again - cc982ae42ec86c79a67be1a01c6ee35fb06c272c
  The unit tests was not working due to lack update. This patch adds the necessary stuff to have it work again.

- iis: Avoids directory link while building - ad330a44bfa39430cf6340cb52971568cccdf1d6
  Build scripts was creating links allowing the project to be loaded into Visual Studio without care about the dependencies versions. Sometimes windows refuse to delete those links leading the script to fail. This patch moves the sources directories instead of create links to it.

- QA: Avoids the utilization of 3rd filedescriptor - 69c5ccac662f4e11a6eefd54a3e912583c067b9d
  No need to use a 3rd description on the quality check scripts. Stderr is now redirected to stdout and filtered as needed.

- Supports WarningCountingShellCommand in cppcheck and vera - baaf502363e68c3240b60adb7f7c91f5b4f0ba03
  WarningCountingShellCommand allow us to have some measurements on the buildbot waterfall.

- iis: Using base_rules instead of activated_rules - 7b1537058fa451e0df7098cd907ef19f04102f9d

- iis: Fix inet_pton build problem - a4202146b8d26b6615bbab986383fe0afae60d77
  There is a function named inet_pton on windows API, with different signature. This patch just override the windows function and point the inet_pton to our implementation.

- iis: Adds Wix installer xml file.c - b32cb7d9ab397160f0154aa4bd4e9638658b41e6
  This commit adds the Wix template to our git repository.

- iis: build_modsecurity.bat fixies - 7e03e3f840375ed682c35a5bb67932461cc77013
  This commit enable a cleanup on the mod_security build directory avoiding symbols with different architectures.

- iis: Fix mlogc build on windows - 9b7663fa79377a0685130a019916d810f31e7478
  The libcurl path was not pointing to the correct directory

- Fix #154, Uses addn instead of apr_table_setn - 1734221d9d3a78f9aafd68e35717da9ee1a4fe51
  The headers are represented in the format of an apr_table, which is able to handle elements with the same key, however the function apr_table_setn checks if the key exists before add the element, if so it replaces the old value with the new one. This was making our implementation to just keep the last added Cookie. The apr_table_addn function, which is now used, just add a new item without check for olders one.

- Merge pull request #579 from zimmerle/revert_139 - 61e54f2067ae760808359926ff91d57275df1aac
  Revert merge request #139

- Revert "Merge pull request #139 from chaizhenhua/remotes/trunk" - 7f7d00fa2c364716691df1b45779304b24a0debb
  This reverts commit 10fd40fb0d06f6c577d870b6f15d2f6e2a3a5b1b, reversing changes made to 414033aafa94cd50c9b310afd3f164740caccc94.

- Merge pull request #578 from client9/remotes/trunk - b0c3977845f60747b15ae10531b7d20355a22627
  libinjection sync to v3.8.0

- libinjection sync - a5f175d79fac1e69124da4e1e227b622e7e233d7

- Merge pull request #152 from client9/remotes/trunk - 88ebf8a0bdbc4db1be76f3a2e70df77cc52a5925
  Sync to libinjection v3.7.1

- libinjection sync - fcb6dc13ed6efb066fb9b70405eecab8b83a2d96

- libinjection sync - f52242a013f301ca5c17e59b662124833cb7cc6d

- Merge pull request #148 from zimmerle/bugfix_charset_missing_string_terminator - b76e26d81ddafc2b99bffad53d1426f8fd33080a
  Bugfix: missing string terminator while mounting the charset (nginx)

- Bugfix: missing string terminator while mounting the charset (nginx) - ff19dcd5c53d4af61d0a9397d4616f47f80ee207
  The charset in headers is mounted using ngx_snprintf which does not place the string terminator. This patch adds the terminator at the end of the string. The size was correctly allocated, just missing the terminator.

- Merge pull request #141 from client9/remotes/trunk - 9a630eea23a7ead4e77617c86dc937fd7a421a57
  libinjection sync to v3.6.0

- libinjection sync - 11217207e8f2e0cf15742273836399866971071a

- Fix Chunked string case sensitive issue - CVE-2013-5705 - f8d441cd25172fdfe5b613442fedfc0da3cc333d

- Revert "Fix Chuncked string case sensitive issue" - 3901128f17e0763ac1a260106b79859d2aad6d90
  This reverts commit 16a815a3c2735f62238ef99af26090a2b8430d3d.

- Fix Chuncked string case sensitive issue - 16a815a3c2735f62238ef99af26090a2b8430d3d

- Merge pull request #139 from chaizhenhua/remotes/trunk - 10fd40fb0d06f6c577d870b6f15d2f6e2a3a5b1b
  Fixed fd leackage after reload

- Merge pull request #138 from client9/remotes/trunk - 414033aafa94cd50c9b310afd3f164740caccc94
  libinjection sync

- Fixed fd leackage after reload - e0993fcd7a166ce9e1a279a47d050af1311d9001

- libinjection sync - 2268626c20260e88cab9b7830f8a06101fa7172a

- Fix logical disjunction and conjunction issues - 7e0a9ecf7d492e85650671a0cfcfd53e5f15df2c


23 Jul 2013 - 2.7.5
-------------------
Improvements:

    * SecUnicodeCodePage is deprecated. SecUnicodeMapFile now accepts the code page as a second parameter.

    * Updated Libinjection to version 3.4.1. Many improvements were made.

    * Severity action now supports strings (emergency, alert, critical, error, warning, notice, info, debug).

Bug Fixes:

    * Fixed utf8toUnicode tfn null byte conversion.

    * Fixed NGINX crash when issue reload command.

    * Fixed flush output buffer before inject modified hashed response body.

    * Fixed url normalization for Hash Engine.

    * Fixed NGINX ap_unixd_set_global_perms_mutex compilation error with apache 2.4 devel files.

Security Issues:

10 May 2013 - 2.7.4
-------------------
Improvements:

    * Added Libinjection project http://www.client9.com/projects/libinjection/ as a new operator @detectSQLi. (Thanks Nick Galbreath).

    * Added new variable SDBM_DELETE_ERROR that will be set to 1 when sdbm engine fails to delete entries.

    * NGINX is now set to STABLE. Thanks chaizhenhua and all the people in community who help the project testing, sending feedback and patches.

Bug Fixes:

    * Fixed SecRulePerfTime storing unnecessary rules performance times.

    * Fixed Possible SDBM deadlock condition.

    * Fixed Possible @rsub memory leak.

    * Fixed REMOTE_ADDR content will receive the client ip address when mod_remoteip.c is present.

    * Fixed NGINX Audit engine in Concurrent mode was overwriting existing alert files because a issue with UNIQUE_ID.

    * Fixed CPU 100% issue in NGINX port. This is also related to an memory leak when loading response body.

Security Issues:

    * Fixed Remote Null Pointer DeReference (CVE-2013-2765). When forceRequestBodyVariable action is triggered and a unknown Content-Type is used,
      mod_security will crash trying to manipulate msr->msc_reqbody_chunks->elts however msr->msc_reqbody_chunks is NULL. (Thanks Younes JAAIDI).

28 Mar 2013 - 2.7.3
-------------------

  * Fixed IIS version race condition when module is initialized.

  * Fixed IIS version failing config commands in libapr.

  * Nginx version is now RC quality. The rule engine should works for all phases.
    We fixed many issues and missing features (for more information please check jira).
    Code is running well with latest Nginx 1.2.7 stable.
    Thanks chaizhenhua for your help.

  * Added MULTIPART_NAME and MULTIPART_FILENAME. Should be used soon by CRS
    and will help prevent attacks using multipart data.

  * Added --enable-htaccess-config configure option. It will allow the follow directives
    to be used into .htaccess files when AllowOverride Options is set:

        - SecAction
        - SecRule

        - SecRuleRemoveByMsg
        - SecRuleRemoveByTag
        - SecRuleRemoveById

        - SecRuleUpdateActionById
        - SecRuleUpdateTargetById
        - SecRuleUpdateTargetByTag
        - SecRuleUpdateTargetByMsg

  * Improvements in the ID duplicate code checking. Should be faster now.

  * SECURITY: Added SecXmlExternalEntity (On|Off - default it Off) that will disable
    by default the external entity load task executed by LibXml2. This is a security issue
    [CVE-2013-1915] reported by Timur Yunusov, Alexey Osipov (Positive Technologies).

21 Jan 2013 - 2.7.2
-------------------

  * IIS version is now stable.

  * Fixed IIS version does not pass through POST data to ASP.NET when SecRequestBodyAccess
    is set to On (MODSEC-372).

  * Fixed IIS version HTTP Request Smuggling protection does not work (MODSEC-344).

  * Fixed IIS version PHP Injection Attack (958976) protection does not work (MODSEC-346).

  * Fixed IIS version Request limit protections are not working (MODSEC-349).

  * Fixed IIS version Outbound protections are not working (MODSEC-350).

  * Added IIS version better installer.

  * NGINX version removed ModSecurityPassCommand (Thanks chaizhenhua).

  * Fixed NGINX version ngx_http_read_client_request_body returned unexpected buffer type (Thanks chaizhenhua).

  * Fixed NGINX version INCS config directories on fedora (Thanks chaizhenhua).

  * Added NGINX version Added drop action for nginx (Thanks chaizhenhua).

  * Fixed bug in cpf_verify operator (Thanks Hideaki Hayashi).

  * Fixed build modsecurity under Arch Linux.

  * Fixed make test crashing when JIT pcre is enabled.

  * Fixed better cookie separator detection code.

  * Fixed mod_security displaying wrong ip address in error.log using apache 2.4 and mod_remoteip.

  * Fixed mod_security was not compiling when use apr without ipv6 support.

  * Fixed mod_security was not compiling when use lua 5.2.

  * Fixed issue when execute make install under Solaris.

  * Fixed ipmatchf operator was not working as expected.

01 Nov 2012 - 2.7.1
-------------------

  * Changed "Encryption" name of directives and options related to hmac feature to "Hash".

    SecEncryptionEngine       to SecHashEngine
    SecEncryptionKey          to SecHashKey
    SecEncryptionParam        to SecHashParam
    SecEncryptionMethodRx     to SecHashMethodRx
    SecEncryptionMethodPm     to SecHashMethodPm
    @validateEncryption       to @validateHash
    ctl:EncryptionEnforcement to ctl:HashEnforcement
    ctl:EncryptionEngine      to ctl:HashEngine

  * Added a better random bytes generator using apr_generate_random_bytes() to create
    the HMAC key.

  * Fixed byte conversion issue during logging under Linux s390x platform.

  * Fixed compilation bug with LibXML2 2.9.0 (Thanks Athmane Madjoudj).

  * Fixed parsing error with modsecurity-recommended.conf and Apache 2.4.

  * Fixed DROP action was disabled for Apache 2 module by mistake.

  * Fixed bug when use ctl:ruleRemoveTargetByTag.

  * Fixed IIS and NGINX modules bugs.

  * Fixed bug when @strmatch patterns use invalid escape sequence (Thanks Hideaki Hayashi).

  * Fixed bugs in @verifySSN (Thanks Hideaki Hayashi).

  * The doc/ directory now contains the instructions to access online documentation.

15 Oct 2012 - 2.7.0
-------------------

  * Fixed Pause action should work as a disruptive action (MODSEC-297).

  * Fixed Problem loading mod_env variables in phase 2 (MODSEC-226).

  * Fixed Detect cookie v0 separator and use it for parsing (MODSEC-261).

  * Fixed Variable REMOTE_ADDR with wrong IP address in NGINX version (MODSEC-337).

  * Fixed Errors compiling NGINX version.

  * Added Include directive into standalone module. IIS and NGINX module should
    support Include directive like Apache2.

  * Added MULTIPART_INVALID_PART flag. Also used in rule id 200002 for multipart strict
    validation. https://www.sec-consult.com/fxdata/seccons/prod/temedia/advisories_txt/20121017-0_mod_security_ruleset_bypass.txt).

  * Updated Reference Manual.

25 Sep 2012 - 2.6.8
-------------------

  * Fixed ctl:ruleRemoveTargetByID order issue (MODSEC-333). Thanks to Armadillo Dasypodidae.

  * Fixed variable HIGHEST_SEVERITY incorrectly gets reset in a chain rule (MODSEC-315). Thanks to Valery Reznic.

10 Sep 2012 - 2.7.0-rc3
-------------------

 * Fixed requests bigger than SecRequestBodyNoFilesLimit were truncated even engine mode was detection only.

 * Fixed double close() for multipart temporary files (Thanks Seema Deepak).

 * Fixed many small issues reported by Coverity Scanner (Thanks Peter Vrabek).

 * Fixed format string issue in ngnix experimental code. (Thanks Eldar Zaitov).

 * Added ctl:ruleRemoveTargetByTag/Msg and removed ctl:ruleUpdateTargetByTag/Msg.

 * Added IIS and Ngnix platform code.

 * Added new transformation utf8toUnicode.

23 Jul 2012 - 2.6.7
-------------------

 * Fixed explicit target replacement using SecUpdateTargetById was broken.

 * The ctl:ruleUpdateTargetById is deprecated and will be removed for future versions since
   there is no safe way to use it per-request.

 * Added ctl:ruleRemoveTargetById that can be used to exclude targets to be processed per-request.

22 Jun 2012 - 2.7.0-rc2
-------------------

 * Fixed compilation errors and warnings under Windows platform.

 * Fixed SecEncryptionKey was not working as expected.

08 Jun 2012 - 2.7.0-rc1
-------------------

 * Added SecEncryptionEngine. Initial crypt engine support, at the momment it will sign some Html
   and Response Header options.

 * Added SecEncryptionKey to define the a rand or static key for crypt engine.

 * Added SecEncryptionParam to define the new parameter name.

 * Added SecEncryptionMethodRx used with a regular expression to inspect the html in response
   body/header and decide what to protect.

 * Added SecEncryptionMethodPm used with multiple or single strings to inspect the html in response
   body/header and decide what to protect.

 * Added ctl encryptionEngine as a per transaction version of SecEncryptionEgine diretive.

 * Added ctl encryptionEnforcement that will allow the engine to sign the data but the enforcement is
   disabled.

 * Added validateEncryption operator to enforce the signed elements.

 * Added rsub operator supports the syntax |hex| allowing users to use special chars like \n \r.

 * Added SecRuleUpdateTargetById now supports id range.

 * Added SecRuleUpdateTargetByMsg and its ctl version (Thanks Scott Gifford).

 * Added SecRuleUpdateTargetByTag and its ctl version (Thanks Scott Gifford).

 * Added SecRulePerfTime when greater than zero it will fill rule id's execution time into PERF_RULE
   and log id=usec information in the new Perf-rule-info: line in part H.

 * Added PERF_RULES variable that contains rule execution time.

 * Added Engine-mode: section in part H.

 * Added ruleRemoveByMsg ctl version.

 * Added removeCommentsChar and removeComments now can work with <!-- --> style.

 * Added SecArgumentSeparator and SecCookieFormat can be used in different scope locations.

 * Added Rules must have ID action and must be numeric.

 * Added The use of tfns are deprecated in SecDefaultAction. Should be forbid in the future.

 * Added Macro expansion support to the action pause.

 * Added IpmatchFromFile/IpmatchF operator.

 * Added New setrsc action, the RESOURCE collection used SecWebAppId Name Space

 * Added Configure option --enable-cache-lua that allows reuse of Lua VM per transaction.
   It will only take any effect when ModSecurity has multiple scripts to run per transaction.

 * Added Configure option --enable-pcre-jit that allows ModSecurity regex engine to use PCRE Jit support.

 * Added Configure option --enable-request-early that allows ModSecurity run phase 1 in post_read_request hook.

 * Added RBL operator now support the httpBl api (http://www.projecthoneypot.org/httpbl_api.php).

 * Added SecHttpBlKey to be used with httpBl api.

 * Added SecSensorId will specify the modsecurity sensor name into audit log part H.

 * Added aliases to phase:2 (phase:request), phase:4 (phase:response) and phase:5 (phase:logging).

 * Added USERAGENT_IP variable. Created when Apache24 is used with mod_remoteip to know the real
   client ip address.

 ^ Added new rule metadata actions ver, maturity and accuracy. Also included into RULE collection.

 * Updated Reference manual into doc/ directory.

 * Fixed Variable DURATION contains the elapsed time in microseconds for compatible reasons with apache and
   other variables.

 * Fixed Preserve names/identity of the variables going into MATCHED_VARS.

 * Fixed Redirect macro expansion does not work in SecDefaultAction when SecRule uses block action.

 * Fixed rsub operator does not work as expect if regex contains parentheses (Thanks Jerome Freilinger).

 * Current Google Safe Browsing implementation is deprecated. Google changed the API and does not allow
   anymore the malware database for download.

08 Jun 2012 - 2.6.6
-------------------

 * Added build system support for KfreeBSD and HURD.

 * Fixed a multipart bypass issue related to quote parsing
   Credits to  Qualys Vulnerability & Malware Research Labs (VMRL).

20 Mar 2012 - 2.6.5
-------------------

 * Fixed increased a specific message debug level in SBDM code (MODSEC-293).

 * Cleanup build system.

09 Mar 2012 - 2.6.4
-------------------

 * Fixed Mlogc 100% CPU consume (Thanks Klaubert Herr and Ebrahim Khalilzadeh).

 * Fixed ModSecurity cannot load session and user sdbm data.

 * Fixed updateTargetById was creating rule unparsed content making apache memory grow.

 * Code cleanup.

23 Feb 2012 - 2.6.4-rc1
-------------------

 * Fixed @rsub adding garbage data into stream variables.

 * Fixed regex for section A into mlogc-batch-load.pl (Thanks Ebrahim Khalilzadeh).

 * Fixed logdata cuts message without closing it with final chars.

 * Added sanitizeMatchedBytes support to verifyCPF, verifyCC and verifySSN.


06 Dec 2011 - 2.6.3-rc1
-------------------

* Fixed MATCHED_VARS does not correctly handle multiple VARS with the same name.

* Fixed SDBM garbage collection was not working as expected, increasing the size of files.

* Fixed wrong timestamp calculation for some time zones in log files.

* Fixed SecUpdateTargetById failed to load multiple VARS (MODSEC-270).

* Fixed Reverted hexDecode for hexEncode compatibility reason.

* Added SecCollectionTimeout to set collection timeout, default is 3600.

* Added sqlHexDecode transformation to decode sql hex data. Thanks Marc Stern.

30 Sep 2011 - 2.6.2
-------------------

 * Fixed hexDecode test during make.

 * Updated the reference manual into doc/ directory.

5 Sep 2011 - 2.6.2-rc1
-------------------

 * Added support to macro expansion for rx operator.

 * Added new transformations removeComments and removeCommentsChars

 * Fixed colletion names are not case-sensitive anymore.

 * Fixed compilation errors with apache 2.0.

 * Fixed build system was not using some libraries CFLAGS.

 * Fixed check for valid hex values into hexDecode transformation.

 * Fixed ctl:ruleUpdateTargetById appending multiple targets.

18 Jun 2011 - 2.6.1
-------------------

 * Updated the reference manual into doc/ directory.

11 Jul 2011 - trunk
-------------------

 * Add HttpBl support to rbl operator.

30 Jun 2011 - 2.6.1-rc1
-------------------

 * Fixed SecUploadFileMode doesn't work with the new build system.

 * Fixed building with Lua library (Thanks Diego Elio).

 * Fixed some ./configure --enable* features not being enabled in compilation time.

 * Improvements on GSB database add/search operations.

 * Log part K was removed from modsecurity.conf-recommended.

 * Added SecUnicodeMapFile directive. Must be use to load the unicode.mapping file.

 * Added SecUnicodeCodePage directive. Used to define the unicode code page. There are a few already available:

    1250  (ANSI - Central Europe)
    1251  (ANSI - Cyrillic)
    1252  (ANSI - Latin I)
    1253  (ANSI - Greek)
    1254  (ANSI - Turkish)
    1255  (ANSI - Hebrew)
    1256  (ANSI - Arabic)
    1257  (ANSI - Baltic)
    1258  (ANSI/OEM - Viet Nam)
    20127 (US-ASCII)
    20261 (T.61)
    20866 (Russian - KOI8)
    28591 (ISO 8859-1 Latin I)
    28592 (ISO 8859-2 Central Europe)
    28605 (ISO 8859-15 Latin 9)
    37    (IBM EBCDIC - U.S./Canada)
    437   (OEM - United States)
    500   (IBM EBCDIC - International)
    850   (OEM - Multilingual Latin I)
    860   (OEM - Portuguese)
    861   (OEM - Icelandic)
    863   (OEM - Canadian French)
    865   (OEM - Nordic)
    874   (ANSI/OEM - Thai)
    932   (ANSI/OEM - Japanese Shift-JIS)
    936   (ANSI/OEM - Simplified Chinese GBK)
    949   (ANSI/OEM - Korean)
    950   (ANSI/OEM - Traditional Chinese Big5)

    Also mapping some extra unicode chars defined at http://tools.ietf.org/html/rfc3490#section-3.1

 * Fixed SecRequestBodyLimit was truncating the real request body.

18 May 2011 - 2.6.0
-------------------

 * Added SecWriteStateLimit for Slow Post DoS mitigation.

 * Fix problem when buffering in input filter.

 * Fix memory leak when use MATCHED_VAR_NAMES.


2 May 2011 - 2.6.0-rc2
-------------------

 * Added code optimizations - thanks Diego Elio.

 * Added support to AIX and HPUX in the build system (untested).

 * Renamed decodeBase64Ext to base64DecodeExt.

 * Build system improvements - thanks Diego Elio.

 * Improvements on gsblookup parser.

 * Fixed input filter bug when upload files and SecStreamInBodyInspect is enabled.

 * Logging improvements and bug fix.

 * Remove extra useless files when make clean and maintainer-clean

18 Apr 2011 - 2.6.0-rc1
-------------------

 * Replaced previous GPLv2 License to Apachev2.

 * Added Google Safe Browsing lookups operator and directive. It should be
   used to extract and lookup urls from http packets.

 * Added Data Modification operator. It must be used with STREAM_* variables
   to replace/add/edit any data from http bodies.

 * Added STREAM_OUPUT_BODY and STREAM_INPUT_BODY variables to work with data
   modification operators.

 * Added fast ip address operator. It supports partial ip address, cidr for
   IPv4 and IPv6. Thanks Tom Donovan.

 * Added new sensitive data tracking verifyCPF and verifySSN.

 * Added MATCHED_VARS and MATCHED_VARS_NAMES. It is similiar to MATCHED_VAR,
   but now we should see all matched variables.

 * Added UNIQUE_ID variable. It holds the data created my mod_unique_id.

 * Added new tranformation cmdline. Thanks Marc Stern.

 * Added new exception handling operators and directives. It should help users
   reduce FN and FPs. The directives SecRuleUpdateTargetById, SecRuleRemoveByTag
   and its ctl actions were included.

 * Added SecStreamOutBodyInspection and SecStreamInBodyInspection to enable STREAM_*
   variables.

 * Added SecGsbLookupDB used to load Google Safe Browsing malware databse into
   memory.

 * Added the directive SecInterceptOnError to control what to do if a rule returns
   values less than zero.

 * Improvements in DetectionOnly engine mode. Also added SecRequestBodyLimitAction
   to control what to do if the engine receive a http request over a hard limit.
   Note that there is now many combinations with SecRuleEngine and the limit action
   directives for response and request data. Please see the reference manual.

 * Improvements under RBL operator. It now will parse return code values for some
   RBL lists.

 * Added new Log Part J. It should log some informations about uploaded files.

 * Added new sanitizeMatchedBytes action. It will give more flexibilty for user to sanitize
   logged data, also improving peformance when sanitize big amount of data.

 * Improvements on Logging phase. It is possible now see full chains, distinguish between
   simple rules, chain starters and chain nodes.

 * Improvements on AutoTools usage.

 * Improvements on pattern matching operators, pmf, pm and strmatch now supports more flexible
   input data allowing any kind of special char.

 * Improvements on SecRuleUpdateActionById to update chain nodes.

 * Many bugs were fixed. Please see the ModSecurity Jira for more details


19 Mar 2010 - trunk
-------------------

 * Added SecDisableBackendCompression, which disabled backend compression
   while keeping the frontend compression enabled (assuming mod_deflate
   in installed and configured in the proxy). [Ivan Ristic]

 * Added REQUEST_BODY_LENGTH, which contains the number of request body
   bytes read. [Ivan Ristic]

 * Integrate with mod_log_config using the %{VARNAME}M format string.
   (MODSEC-108) [Ivan Ristic]

 * Replaced the previous time-measuring mechanism with a new one, which
   provides the following information: request time, request duration,
   phase duration (for all 5 phases), time spent dealing with persistent
   storage, and time spent on audit logging. The new information is now
   available in the Stopwatch2 audit log header. The Stopwatch header
   remains for backward compatiblity, although it now only includes
   the request time and request duration values. Added the following
   variables: PERF_COMBINED, PERF_PHASE1, PERF_PHASE2, PERF_PHASE3,
   PERF_PHASE4, PERF_PHASE5, PERF_SREAD, PERF_SWRITE, PERF_LOGGING,
   PERF_GC. [Ivan Ristic]

 * Added DURATION, which contains the time ellapsed since the beginning
   of the current transaction, in milliseconds. [Ivan Ristic]

 * Adjusted phase 5 to execute just prior to mod_log_config. This should
   allow phase 5 rules to to implement conditional logging, as well as
   pave support for allowing access to all ModSecurity variables from
   mog_log_config. [Ivan Ristic]

 * Added the URLENCODED_ERROR flag, which is raised whenever invalid URL
   encoding is encountered in the query string or in the request body
   (but only if URLENCODED request body processor is used). (MODSEC-111)
   [Ivan Ristic]

 * Removed the obsolete PDF UXSS functionality. (MODSEC-96) [Ivan Ristic]

 * Renamed normalisePath to normalizePath and normalisePathWin to
   normalizePathWin. Kept the previous names for backward compatibility.
   (MODSEC-103) [Ivan Ristic]

 * Moved phase 1 to be run in the same Apache hook as phase 2. This means
   that you can now have phase 1 rules in <Location> tags and, more
   importantly, override server configuration in <Location> and others.
   (MODSEC-98) [Ivan Ristic]

 * Renamed the sanitise family of actions to sanitize. Kept the old variants
   for backward compatibility. (MODSEC-95) [Ivan Ristic]

 * Improve the logging of the ctl action. (MODSEC-99) [Ivan Ristic]

 * Cleanup build files that were from the Apache source.
jperkin pushed a commit that referenced this pull request Mar 14, 2014
Serf 1.3.4 [2014-02-08, from /tags/1.3.4, rxxxx]
  Fix issue #119: Endless loop during ssl tunnel setup with Negotiate authn
  Fix issue #123: Can't setup ssl tunnel which sends Connection close header
  Fix a race condition when initializing OpenSSL from multiple threads (r2263)
  Fix issue #138: Incorrect pkg-config file when GSSAPI isn't configured
jperkin pushed a commit that referenced this pull request Apr 22, 2014
Upstream changes:
1.001003     Fri Mar  21 21:12:32 PST 2014
    * Doc updates for maintainer change

1.001002     Mon Nov  4 15:13:58 EST 2013
    * no changes since 0.99

1.001001_001 Wed Oct 30 20:47:23 EDT 2013
    * no code changes, just a new version number with more room to grow

0.99     Tue Oct 29 13:21:03 2013 EDT 2013
    * restore ability to use regex with test_err and test_out
      (Zefram) [rt.cpan.org #89655] [github #389] [github #387]

0.99     Sat Oct 12 15:05:41 EDT 2013
    * no changes since 0.98_06

0.98_06  Fri Sep 27 10:11:05 EDT 2013
    Bug Fixes
    * Fix precedence error with (return ... and ...)
      (nthykier) [github #385]

0.98_05  Tue Apr 23 17:33:51 PDT 2013
    Doc Changes
    * Add a shorter work around for the UTF-8 output problem.
      (Michael G Schwern)

    Bug Fixes
    * Test::Builder::Tester now works with subtests.
      (Michael G Schwern) [github 350]
    * Fix test_fail() inside a do statement.
      (nnutter) [github #369]

    New Features
    * A subtest will put its name at the front of its results to make
      subtests easier to read. [github #290] [github #364]
      (Brendan Byrd)

    Feature Changes
    * like() and unlike() no longer warn about undef. [github #335]
      (Michael G Schwern)


0.98_04  Sun Apr 14 10:54:13 BST 2013
    Distribution Changes
    * Scalar::Util 1.13 (ships with Perl 5.8.1) is now required.
      (Michael G Schwern)

    Feature Changes
    * The default name and diagnostics for isa_ok() and new_ok() have
      changed. (Michael G Schwern)

    Docs Fixes
    * Added a COMPATIBILITY section so users know what major features were
      added with what version of Test::More or perl. [github 343] [github 344]
      (pdl)
    * Fix the ok() example with grep(). ([email protected])

    Bug Fixes
    * A test with no plan and missing done_testing() now exits with non-zero.
      [github #341] (tokuhirom)
    * isa_ok() tests were broken in 5.17 because of a change in
      method resolution. [github #353] (Michael G Schwern)


0.98_03  Thu Jun 21 13:04:19 PDT 2012
    New Features
    * cmp_ok() will error when used with something which is not a
      comparison operator, including =, += and the like.
      [github 141] (Matthew Horsfall)

    Bug Fixes
    * use_ok() was calling class->import without quoting which could
      cause problems if "class" is also a function.

    Doc Fixes
    * use_ok() has been discouraged and de-emphasized as a general
      replacement for `use` in tests. [github #288]
    * $thing is now $this in the docs to avoid confusing users of
      other languages. [Karen Etheridge]

    Incompatible Changes With Previous Alphas (0.98_01)
    * use_ok() will no longer apply lexical pragams.  The incompatibilities
      and extra complexity is not worth the marginal use.
      [github #287]


0.98_02  Thu Nov 24 01:13:53 PST 2011
    Bug Fixes
    * use_ok() in 0.98_01 was leaking pragmas from inside Test::More.
      This looked like Test::More was forcing strict. [rt.cpan.org 67538]
      (Father Chrysostomos)


0.98_01  Tue Nov  8 17:07:58 PST 2011
    Bug Fixes
    * BAIL_OUT works inside a subtest. (Larry Leszczynski) [github #138]
    * subtests now work with threads turned on. [github #145]

    Feature Changes
    * use_ok() will now apply lexical effects. [rt.cpan.org 67538]
      (Father Chrysostomos)

    Misc
    * Test::More, Test::Simple and Test::Builder::Module now require
      a minimum version of Test::Builder.  This avoids Test::More and
      Test::Builder from getting out of sync. [github #89]
jperkin pushed a commit that referenced this pull request Jun 2, 2014
Upstream changes:
1.001003     Fri Mar  21 21:12:32 PST 2014
    * Doc updates for maintainer change

1.001002     Mon Nov  4 15:13:58 EST 2013
    * no changes since 0.99

1.001001_001 Wed Oct 30 20:47:23 EDT 2013
    * no code changes, just a new version number with more room to grow

0.99     Tue Oct 29 13:21:03 2013 EDT 2013
    * restore ability to use regex with test_err and test_out
      (Zefram) [rt.cpan.org #89655] [github #389] [github #387]

0.99     Sat Oct 12 15:05:41 EDT 2013
    * no changes since 0.98_06

0.98_06  Fri Sep 27 10:11:05 EDT 2013
    Bug Fixes
    * Fix precedence error with (return ... and ...)
      (nthykier) [github #385]

0.98_05  Tue Apr 23 17:33:51 PDT 2013
    Doc Changes
    * Add a shorter work around for the UTF-8 output problem.
      (Michael G Schwern)

    Bug Fixes
    * Test::Builder::Tester now works with subtests.
      (Michael G Schwern) [github 350]
    * Fix test_fail() inside a do statement.
      (nnutter) [github #369]

    New Features
    * A subtest will put its name at the front of its results to make
      subtests easier to read. [github #290] [github #364]
      (Brendan Byrd)

    Feature Changes
    * like() and unlike() no longer warn about undef. [github #335]
      (Michael G Schwern)


0.98_04  Sun Apr 14 10:54:13 BST 2013
    Distribution Changes
    * Scalar::Util 1.13 (ships with Perl 5.8.1) is now required.
      (Michael G Schwern)

    Feature Changes
    * The default name and diagnostics for isa_ok() and new_ok() have
      changed. (Michael G Schwern)

    Docs Fixes
    * Added a COMPATIBILITY section so users know what major features were
      added with what version of Test::More or perl. [github 343] [github 344]
      (pdl)
    * Fix the ok() example with grep(). ([email protected])

    Bug Fixes
    * A test with no plan and missing done_testing() now exits with non-zero.
      [github #341] (tokuhirom)
    * isa_ok() tests were broken in 5.17 because of a change in
      method resolution. [github #353] (Michael G Schwern)


0.98_03  Thu Jun 21 13:04:19 PDT 2012
    New Features
    * cmp_ok() will error when used with something which is not a
      comparison operator, including =, += and the like.
      [github 141] (Matthew Horsfall)

    Bug Fixes
    * use_ok() was calling class->import without quoting which could
      cause problems if "class" is also a function.

    Doc Fixes
    * use_ok() has been discouraged and de-emphasized as a general
      replacement for `use` in tests. [github #288]
    * $thing is now $this in the docs to avoid confusing users of
      other languages. [Karen Etheridge]

    Incompatible Changes With Previous Alphas (0.98_01)
    * use_ok() will no longer apply lexical pragams.  The incompatibilities
      and extra complexity is not worth the marginal use.
      [github #287]


0.98_02  Thu Nov 24 01:13:53 PST 2011
    Bug Fixes
    * use_ok() in 0.98_01 was leaking pragmas from inside Test::More.
      This looked like Test::More was forcing strict. [rt.cpan.org 67538]
      (Father Chrysostomos)


0.98_01  Tue Nov  8 17:07:58 PST 2011
    Bug Fixes
    * BAIL_OUT works inside a subtest. (Larry Leszczynski) [github #138]
    * subtests now work with threads turned on. [github #145]

    Feature Changes
    * use_ok() will now apply lexical effects. [rt.cpan.org 67538]
      (Father Chrysostomos)

    Misc
    * Test::More, Test::Simple and Test::Builder::Module now require
      a minimum version of Test::Builder.  This avoids Test::More and
      Test::Builder from getting out of sync. [github #89]
jperkin pushed a commit that referenced this pull request Aug 12, 2014
What's New in libchewing 0.4.0 (Apr 11, 2014)
---------------------------------------------------------
* Add the following APIs:
  - Userphrase manipulation
    - chewing_userphrase_enumerate
    - chewing_userphrase_has_next
    - chewing_userphrase_get
    - chewing_userphrase_add
    - chewing_userphrase_remove
    - chewing_userphrase_lookup
  - Keyboardless action
    - chewing_cand_open
    - chewing_cand_close
    - chewing_cand_string_by_index_static
    - chewing_cand_choose_by_index
    - chewing_cand_list_first
    - chewing_cand_list_last
    - chewing_cand_list_has_next
    - chewing_cand_list_has_prev
    - chewing_cand_list_next
    - chewing_cand_list_prev
    - chewing_commit_preedit_buf
    - chewing_clean_preedit_buf
    - chewing_clean_bopomofo_buf
  - Bopomofo buffer
    - chewing_bopomofo_Check
    - chewing_bopomofo_String_static
  - Static API
    - chewing_aux_String_static
    - chewing_buffer_String_static
    - chewing_cand_String_static
    - chewing_commit_String_static
    - chewing_kbtype_String_static
  - Misc
    - chewing_new2
* Dictionary format:
  - Remove text data support
  - Introduce platform independent binary data representation
  - Move binary data to share/libchewing/*
* Userphrase format:
  - Support SQLite-based user phrase storage and manipulation
* New coding style:
  - Use scripts/indent.sh to change coding style
* Bug fixed:
  - Fix chewing_zuin_Check wrong return value #62
  - Fix numlock key cannot output number #45
  - Fix negative frequency problem #75
  - Fix cannot select candidate when symbol exists #79
  - Avoid clearing the buffer when Up arrow key is pressed and escCleanAllBuf is 1.
  - Fix cannot handle numlock 9 correctly #88
  - Fix invalid characters are committed when pre-edit buffer is full
  - Fix AutoLearnPhrase cannot fill correct wordSeq #108
  - Fix wrong auto learn when symbol in between #112
  - Fix missing rpl_malloc for cross compilation #118
  - Fix '\n' appear in symbol table #126
  - Reopen candidate list for symbols with down key #127 #135
  - Let up key close candidate list of symbols #131 #138
* Misc:
  - Add `make check' in cmake build
  - Change MAX_UTF8_SIZE to 4
  - Update official website URL
  - Use CreateFileA() instead of CreateFile() to stick with the ANSI API
  - Do not check phrase longer than MAX_PHRASE_LEN
  - Implement dynamic programming phrasing algorithm #73
  - Clean bopomofo buffer when mode change to English mode #89 #97
  - Update README to GFM.
  - Replace 'INCLUDE' with 'AM_CPPFLAGS' #68 #114 #116
  - Use [Shift]+[-] to input EM DASH (u+2014) as default #113 #124
  - Use Backspace to close candidate window #128
  - Use PgUp/PgDn to turn pages of candidates #129
  - Update Windows default search path #78
  - The word "zuin", "Zhuyin" are obsolete terms for "Bopomofo"
  - Add const whenever possible in several APIs
  - Toggle shape mode with shift-space #141 #142
* Successful stories:
  - chewing-windows-tsf project provides Text Services Framework
    support for Microsoft Windows.
jperkin pushed a commit that referenced this pull request Apr 16, 2015
Update DEPENDS
Add test target

Upstream changes:
2015-03-14 -- 1.4.3

    * Remove three warnings: star-args, abstract-class-little-used,
      abstract-class-not-used. These warnings don't add any real value
      and they don't imply errors or problems in the code.

    * Added a new option for controlling the peephole optimizer in astroid.
      The option ``--optimize-ast`` will control the peephole optimizer,
      which is used to optimize a couple of AST subtrees. The current problem
      solved by the peephole optimizer is when multiple joined strings,
      with the addition operator, are encountered. If the numbers of such
      strings is high enough, Pylint will then fail with a maximum recursion
      depth exceeded error, due to its visitor architecture. The peephole
      just transforms such calls, if it can, into the final resulting string
      and this exhibit a problem, because the visit_binop method stops being
      called (in the optimized AST it will be a Const node).


2015-03-11 -- 1.4.2

    * Don't require a docstring for empty modules. Closes issue #261.

    * Fix a false positive with `too-few-format-args` string warning,
      emitted when the string format contained a normal positional
      argument ('{0}'), mixed with a positional argument which did
      an attribute access ('{0.__class__}').
      Closes issue #463.

    * Take in account all the methods from the ancestors
      when checking for too-few-public-methods. Closes issue #471.

    * Catch enchant errors and emit 'invalid-characters-in-docstring'
      when checking for spelling errors. Closes issue #469.

    * Use all the inferred statements for the super-init-not-called
      check. Closes issue #389.

    * Add a new warning, 'unichr-builtin', emitted by the Python 3
      porting checker, when the unichr builtin is found. Closes issue #472.

    * Add a new warning, 'intern-builtin', emitted by the Python 3
      porting checker, when the intern builtin is found. Closes issue #473.

    * Add support for editable installations.

    * The HTML output accepts the `--msg-template` option. Patch by
      Dan Goldsmith.

    * Add 'map-builtin-not-iterating' (replacing 'implicit-map-evaluation'),
      'zip-builtin-not-iterating', 'range-builtin-not-iterating', and
      'filter-builtin-not-iterating' which are emitted by `--py3k` when the
      appropriate built-in is not used in an iterating context (semantics
      taken from 2to3).

    * Add a new warning, 'unidiomatic-typecheck', emitted when an explicit
      typecheck uses type() instead of isinstance(). For example,
      `type(x) == Y` instead of `isinstance(x, Y)`. Patch by Chris Rebert.
      Closes issue #299.

    * Add support for combining the Python 3 checker mode with the --jobs
      flag (--py3k and --jobs). Closes issue #467.

    * Add a new warning for the Python 3 porting checker, 'using-cmp-argument',
      emitted when the `cmp` argument for the `list.sort` or `sorted builtin`
      is encountered.

    * Make the --py3k flag commutative with the -E flag. Also, this patch
      fixes the leaks of error messages from the Python 3 checker when
      the errors mode was activated. Closes issue #437.


2015-01-16 -- 1.4.1

    * Look only in the current function's scope for bad-super-call.
      Closes issue #403.

    * Check the return of properties when checking for not-callable.
      Closes issue #406.

    * Warn about using the input() or round() built-ins for Python 3.
      Closes issue #411.

    * Proper abstract method lookup while checking for
      abstract-class-instantiated. Closes issue #401.

    * Use a mro traversal for finding abstract methods. Closes issue #415.

    * Fix a false positive with catching-non-exception and tuples of
      exceptions.

    * Fix a false negative with raising-non-exception, when the raise used
      an uninferrable exception context.

    * Fix a false positive on Python 2 for raising-bad-type, when
      raising tuples in the form 'raise (ZeroDivisionError, None)'.

    * Fix a false positive with invalid-slots-objects, where the slot entry
      was an unicode string on Python 2. Closes issue #421.

    * Add a new warning, 'redundant-unittest-assert', emitted when using
      unittest's methods assertTrue and assertFalse with constant value
      as argument. Patch by Vlad Temian.

    * Add a new JSON reporter, usable through -f flag.

    * Add the method names for the 'signature-differs' and 'argument-differs'
      warnings. Closes issue #433.

    * Don't compile test files when installing.

    * Fix a crash which occurred when using multiple jobs and the files
      given as argument didn't exist at all.


2014-11-23 -- 1.4.0

    * Added new options for controlling the loading of C extensions.
      By default, only C extensions from the stdlib will be loaded
      into the active Python interpreter for inspection, because they
      can run arbitrary code on import. The option
      `--extension-pkg-whitelist` can be used to specify modules
      or packages that are safe to load.

    * Change default max-line-length to 100 rather than 80

    * Drop BaseRawChecker class which were only there for backward
      compat for a while now

    * Don't try to analyze string formatting with objects coming from
      function arguments. Closes issue #373.

    * Port source code to be Python 2/3 compatible. This drops the
      need for 2to3, but does drop support for Python 2.5.

    * Each message now comes with a confidence level attached, and
      can be filtered base on this level. This allows to filter out
      all messages that were emitted even though an inference failure
      happened during checking.

    * Improved presenting unused-import message. Closes issue #293.

    * Add new checker for finding spelling errors. New messages:
      wrong-spelling-in-comment, wrong-spelling-in-docstring.
      New options: spelling-dict, spelling-ignore-words.

    * Add new '-j' option for running checks in sub-processes.

    * Added new checks for line endings if they are mixed (LF vs CRLF)
      or if they are not as expected. New messages: mixed-line-endings,
      unexpected-line-ending-format. New option: expected-line-ending-format.

    * 'dangerous-default-value' no longer evaluates the value of the arguments,
      which could result in long error messages or sensitive data being leaked.
      Closes issue #282

    * Fix a false positive with string formatting checker, when
      encountering a string which uses only position-based arguments.
      Closes issue #285.

    * Fix a false positive with string formatting checker, when using
      keyword argument packing. Closes issue #288.

    * Proper handle class level scope for lambdas.

    * Handle 'too-few-format-args' or 'too-many-format-args' for format
      strings with both named and positional fields. Closes issue #286.

    * Analyze only strings by the string format checker. Closes issue #287.

    * Properly handle nested format string fields. Closes issue #294.

    * Don't emit 'attribute-defined-outside-init' if the attribute
      was set by a function call in a defining method. Closes issue #192.

    * Properly handle unicode format strings for Python 2.
      Closes issue #296.

    * Don't emit 'import-error' if an import was protected by a try-except,
      which excepted ImportError.

    * Fix an 'unused-import' false positive, when the error was emitted
      for all the members imported with 'from import' form.
      Closes issue #304.

    * Don't emit 'invalid-name' when assigning a name in an
      ImportError handler. Closes issue #302.

    * Don't count branches from nested functions.

    * Fix a false positive with 'too-few-format-args', when the format
      strings contains duplicate manual position arguments.
      Closes issue #310.

    * fixme regex handles comments without spaces after the hash.
      Closes issue #311.

    * Don't emit 'unused-import' when a special object is imported
      (__all__, __doc__ etc.). Closes issue #309.

    * Look in the metaclass, if defined, for members not found in the current
      class. Closes issue #306.

    * Don't emit 'protected-access' if the attribute is accessed using
      a property defined at the class level.

    * Detect calls of the parent's __init__, through a binded super() call.

    * Check that a class has an explicitly defined metaclass before
      emitting 'old-style-class' for Python 2.

    * Emit 'catching-non-exception' for non-class nodes. Closes issue #303.

    * Order of reporting is consistent.

    * Add a new warning, 'boolean-datetime', emitted when an instance
      of 'datetime.time' is used in a boolean context. Closes issue #239.

    * Fix a crash which ocurred while checking for 'method-hidden',
      when the parent frame was something different than a function.

    * Generate html output for missing files. Closes issue #320.

    * Fix a false positive with 'too-many-format-args', when the format
      string contains mixed attribute access arguments and manual
      fields. Closes issue #322.

    * Extend the cases where 'undefined-variable' and 'used-before-assignment'
      can be detected. Closes issue #291.

    * Add support for customising callback identifiers, by adding a new
      '--callbacks' command line option. Closes issue #326.

    * Add a new warning, 'logging-format-interpolation', emitted when .format()
      string interpolation is used within logging function calls.

    * Don't emit 'unbalanced-tuple-unpacking' when the rhs of the assignment
      is a variable length argument. Closes issue #329.

    * Add a new warning, 'inherit-non-class', emitted when a class inherits
      from something which is not a class. Closes issue #331.

    * Fix another false positives with 'undefined-variable', where the variable
      can be found as a class assignment and used in a function annotation.
      Closes issue #342.

    * Handle assignment of the string format method to a variable.
      Closes issue #351.

    * Support wheel packaging format for PyPi. Closes issue #334.

    * Check that various built-ins that do not exist in Python 3 are not
      used: apply, basestring, buffer, cmp, coerce, execfile, file, long
      raw_input, reduce, StandardError, unicode, reload and xrange.

    * Warn for magic methods which are not used in any way in Python 3:
      __coerce__, __delslice__, __getslice__, __setslice__, __cmp__,
      __oct__, __nonzero__ and __hex__.

    * Don't emit 'assigning-non-slot' when the assignment is for a property.
      Closes issue #359.

    * Fix for regression: '{path}' was no longer accepted in '--msg-template'.

    * Report the percentage of all messages, not just for errors and warnings.
      Closes issue #319.

    * 'too-many-public-methods' is reported only for methods defined in a class,
      not in its ancestors. Closes issue #248.

    * 'too-many-lines' disable pragma can be located on any line, not only the
      first. Closes issue #321.

    * Warn in Python 2 when an import statement is found without a
      corresponding `from __future__ import absolute_import`.

    * Warn in Python 2 when a non-floor division operation is found without
      a corresponding `from __future__ import division`.

    * Add a new option, 'exclude-protected', for excluding members
      from the protected-access warning. Closes issue #48.

    * Warn in Python 2 when using dict.iter*(), dict.view*(); none of these
      methods are available in Python 3.

    * Warn in Python 2 when calling an object's next() method; Python 3 uses
      __next__() instead.

    * Warn when assigning to __metaclass__ at a class scope; in Python 3 a
      metaclass is specified as an argument to the 'class' statement.

    * Warn when performing parameter tuple unpacking; it is not supported in
      Python 3.

    * 'abstract-class-instantiated' is also emitted for Python 2.
      It was previously disabled.

    * Add 'long-suffix' error, emitted when encountering the long suffix
      on numbers.

    * Add support for disabling a checker, by specifying an 'enabled'
      attribute on the checker class.

    * Add a new CLI option, --py3k, for enabling Python 3 porting mode. This
      mode will disable all other checkers and will emit warnings and
      errors for constructs which are invalid or removed in Python 3.

    * Add 'old-octal-literal' to Python 3 porting checker, emitted when
      encountering octals with the old syntax.

    * Add 'implicit-map-evaluation' to Python 3 porting checker, emitted
      when encountering the use of map builtin, without explicit evaluation.



2014-07-26  --  1.3.0

    * Allow hanging continued indentation for implicitly concatenated
      strings. Closes issue #232.

    * Pylint works under Python 2.5 again, and its test suite passes.

    * Fix some false positives for the cellvar-from-loop warnings.
      Closes issue #233.

    * Return new astroid class nodes when the inferencer can detect that
      that result of a function invocation on a type (like `type` or
      `abc.ABCMeta`) is requested. Closes #205.

    * Emit 'undefined-variable' for undefined names when using the
      Python 3 `metaclass=` argument.

    * Checkers respect priority now. Close issue #229.

    * Fix a false positive regarding W0511. Closes issue #149.

    * Fix unused-import false positive with Python 3 metaclasses (#143).

    * Don't warn with 'bad-format-character' when encountering
      the 'a' format on Python 3.

    * Add multiple checks for PEP 3101 advanced string formatting:
      'bad-format-string', 'missing-format-argument-key',
      'unused-format-string-argument', 'format-combined-specification',
      'missing-format-attribute' and 'invalid-format-index'.

    * Issue broad-except and bare-except even if the number
      of except handlers is different than 1. Fixes issue #113.

    * Issue attribute-defined-outside-init for all cases, not just
      for the last assignment. Closes issue #262.

    * Emit 'not-callable' when calling properties. Closes issue #268.

    * Fix a false positive with unbalanced iterable unpacking,
      when encountering starred nodes. Closes issue #273.

    * Add new checks, 'invalid-slice-index' and 'invalid-sequence-index'
      for invalid sequence and slice indices.

    * Add 'assigning-non-slot' warning, which detects assignments to
      attributes not defined in slots.

    * Don't emit 'no-name-in-module' for ignored modules.
      Closes issue #223.

    * Fix an 'unused-variable' false positive, where the variable is
      assigned through an import. Closes issue #196.

    * Definition order is considered for classes, function arguments
      and annotations. Closes issue #257.

    * Don't emit 'unused-variable' when assigning to a nonlocal.
      Closes issue #275.

    * Do not let ImportError propagate from the import checker, leading to crash
      in some namespace package related cases. Closes issue #203.

    * Don't emit 'pointless-string-statement' for attribute docstrings.
      Closes issue #193.

    * Use the proper mode for pickle when opening and writing the stats file.
      Closes issue #148.

    * Don't emit hidden-method message when the attribute has been
      monkey-patched, you're on your own when you do that.

    * Only emit attribute-defined-outside-init for definition within the same
      module as the offended class, avoiding to mangle the output in some cases.

    * Don't emit 'unnecessary-lambda' if the body of the lambda call contains
      call chaining. Closes issue #243.

    * Don't emit 'missing-docstring' when the actual docstring uses `.format`.
      Closes issue #281.


2014-04-30  --  1.2.1
    * Restore the ability to specify the init-hook option via the
      configuration file, which was accidentally broken in 1.2.0.

    * Add a new warning [bad-continuation] for badly indentend continued
      lines.

    * Emit [assignment-from-none] when the function contains bare returns.
      Fixes BitBucket issue #191.

    * Added a new warning for closing over variables that are
      defined in loops. Fixes Bitbucket issue #176.

    * Do not warn about \u escapes in string literals when Unicode literals
      are used for Python 2.*. Fixes BitBucket issue #151.

    * Extend the checking for unbalanced-tuple-unpacking and
      unpacking-non-sequence to instance attribute unpacking as well.

    * Fix explicit checking of python script (1.2 regression, #219)

    * Restore --init-hook, renamed accidentally into --init-hooks in 1.2.0
      (#211)

    * Add 'indexing-exception' warning, which detects that indexing
      an exception occurs in Python 2 (behaviour removed in Python 3).



2014-04-18  --  1.2.0
    * Pass the current python paths to pylint process when invoked via
      epylint.  Fixes BitBucket issue #133.

    * Add -i / --include-ids and -s / --symbols back as completely ignored
      options. Fixes BitBucket issue #180.

    * Extend the number of cases in which logging calls are detected. Fixes
      bitbucket issue #182.

    * Improve pragma handling to not detect pylint:* strings in non-comments.
      Fixes BitBucket issue #79.

    * Do not crash with UnknownMessage if an unknown message ID/name appears
      in disable or enable in the configuration. Patch by Cole Robinson.
      Fixes bitbucket issue #170.

    * Add new warning 'eval-used', checking that the builtin function `eval`
      was used.

    * Make it possible to show a naming hint for invalid name by setting
      include-naming-hint. Also make the naming hints configurable. Fixes
      BitBucket issue #138.

    * Added support for enforcing multiple, but consistent name styles for
      different name types inside a single module; based on a patch written
      by [email protected].

    * Also warn about empty docstrings on overridden methods; contributed
      by [email protected].

    * Also inspect arguments to constructor calls, and emit relevant
      warnings; contributed by [email protected].

    * Added a new configuration option logging-modules to make the list
      of module names that can be checked for 'logging-not-lazy' et. al.
      configurable; contributed by [email protected].

    * ensure init-hooks is evaluated before other options, notably load-plugins
      (#166)

    * Python 2.5 support restored: fixed small issues preventing pylint to run
      on python 2.5. Bitbucket issues #50 and #62.

    * bitbucket #128: pylint doesn't crash when looking
      for used-before-assignment in context manager
      assignments.

    * Add new warning, 'bad-reversed-sequence', for checking that the
      reversed() builtin receive a sequence (implements __getitem__ and __len__,
      without being a dict or a dict subclass) or an instance which implements
      __reversed__.

    * Mark `file` as a bad function when using python2 (closes #8).

    * Add new warning 'bad-exception-context', checking
      that `raise ... from ...` uses a proper exception context
      (None or an exception).

    * Enhance the check for 'used-before-assignment' to look
      for 'nonlocal' uses.

    * Emit 'undefined-all-variable' if a package's __all__
      variable contains a missing submodule (closes #126).

    * Add a new warning 'abstract-class-instantiated' for checking
      that abstract classes created with `abc` module and
      with abstract methods are instantied.

    * Do not warn about 'return-arg-in-generator' in Python 3.3+.

    * Do not warn about 'abstract-method' when the abstract method
      is implemented through assignment (#155).

    * Improve cyclic import detection in the case of packages, patch by Buck
      Golemon

    * Add new warnings for checking proper class __slots__:
      `invalid-slots-object` and `invalid-slots`.

    * Search for rc file in `~/.config/pylintrc` if `~/.pylintrc`
      doesn't exists (#121)

    * Don't register the newstyle checker w/ python >= 3

    * Fix unused-import false positive w/ augment assignment (#78)

    * Fix access-member-before-definition false negative wrt aug assign (#164)

    * Do not attempt to analyze non python file, eg .so file (#122)
jperkin pushed a commit that referenced this pull request Jun 17, 2015
### 1.7.2 / 2015-04-19

#### Bug fixes
* Fix #138 (a regression of #131). PR #139.

### 1.7.1 / 2015-02-24

#### Enhancements
* Add travis CI configuration (Eli Young (@elyscape), #130)
* Add Rubinius to Build Matrix with Allowed Failure (Brandon Fish
(bjfish), #132)
* Make some adjustments on tests (Abinoam Marques Jr., #133, #134)
* Drop support for Ruby 1.8 (Abinoam Marques Jr., #134)

#### Bug fixes
* Fix IO.console.winsize returning reversed column and line values (Fission Xuiptz (@fissionxuiptz)), #131)

### 1.7.0 / 2015-02-18

#### Bug fixes
* Fix correct encoding of statements to output encoding (Dāvis (davispuh), #110)
* Fix character echoing when echo is false and multibyte character is typed (Abinoam Marques Jr., #117 #118)
* Fix backspace support on Cyrillic (Abinoam Marques Jr., #115 #118)
* Fix returning wrong encoding when echo is false (Abinoam Marques Jr., #116 #118)
* Fix Question #limit and #realine incompatibilities (Abinoam Marques Jr. #113 #120)
* Fix/improve string coercion on #say (Abinoam Marques Jr., #98 #122)
* Fix #terminal_size returning nil in some terminals (Abinoam Marques Jr., #85 #123)

#### Enhancements
* Improve #format_statement String coercion (Michael Bishop
(michaeljbishop), #104)
* Update homepage url on gemspec (Rubyforge->GitHub) (Edward Anderson
(nilbus), #107)
* Update COPYING file (Vít Ondruch (voxik), #109)
* Improve multi-byte encoding support (Abinoam Marques Jr., #115 #116 #117 #118)
* Make :grey -> :gray and :light -> :bright aliases (Abinoam Marques Jr., #114 #119)
* Return the default object (as it is) when no answer given (Abinoam Marques Jr., #112 #121)
* Added test for Yaml serialization of HighLine::String (Abinoam Marques Jr., #69 #124)
* Make improvements on Changelog and Rakefile (Abinoam Marques Jr., #126 #127 #128)
jperkin pushed a commit that referenced this pull request Jan 17, 2016
* Disable debug library

Changelog:
Release 1.6.1 (2015-08-03)
==========================

- added project and solution files for Visual Studio 2015
- upgraded bundled SQLite to 3.8.11.1
- fixed GH #782: Poco::JSON::PrintHandler not working for nested arrays
- fixed GH #819: JSON Stringifier fails with preserve insert order
- fixed GH #878: UUID tryParse
- fixed GH #869: FIFOBuffer::read(T*, std::size_t) documentation inaccurate
- fixed GH #861: Var BadCastException
- fixed GH #779: BUG in 1.6.0 Zip code
- fixed GH #769: Poco::Var operator== throws exception
- fixed GH #766: Poco::JSON::PrintHandler not working for objects in array
- fixed GH #763: Unable to build static with NetSSL_OpenSSL for OS X
- fixed GH #750: BsonWriter::write<Binary::Ptr> missing size ?
- fixed GH #741: Timestamp anomaly in Poco::Logger on WindowsCE
- fixed GH #735: WEC2013 build fails due to missing Poco::Path methods.
- fixed GH #722: poco-1.6.0: Unicode Converter Test confuses string and char types
- fixed GH #719: StreamSocket::receiveBytes and FIFOBuffer issue in 1.6
- fixed GH #706: POCO1.6 Sample EchoServer BUG
- fixed GH #646: Prevent possible data race in access to Timer::_periodicInerval
- DeflatingStream: do not flush underlying stream on sync() as these can cause
  corrupted files in Zip archives


Release 1.6.0 (2014-12-22)
==========================

- fixed GH #625: MongoDB ensureIndex double insert?
- fixed GH #622: Crypto: RSATest::testSign() should verify with public key only
- fixed GH #620: Data documentation sample code outdated
- fixed GH #618: OS X 10.10 defines PAGE_SIZE macro, conflicts with PAGE_SIZE in Thread_POSIX.cpp
- fixed GH #616: Visual Studio warning C4244
- fixed GH #612: OpenSSLInitializer calls OPENSSL_config but not CONF_modules_free
- fixed GH #608: (Parallel)SocketAcceptor ctor/dtor call virtual functions
- fixed GH #607: Idle Reactor high CPU usage
- fixed GH #606: HTMLForm constructor read application/x-www-form-urlencoded UTF-8 request
  body first parameter with BOM in name
- fixed GH #596: For OpenSSL 1.0.1, include openssl/crypto.h not openssl/fips.h
- fixed GH #592: Incorrect format string in Poco::Dynamic::Struct
- fixed GH #590: Poco::Data::SQlite doesn't support URI filenames
- fixed GH #564: URI::encode
- fixed GH #560: DateTime class calculates a wrong day
- fixed GH #549: Memory allocation is not safe between fork() and execve()
- fixed GH #500: SSLManager causes a crash
- fixed GH #490: 2 byte frame with payload length of 0 throws "Incomplete Frame Received" exception
- fixed GH #483: multiple cases for sqlite_busy
- fixed GH #482: Poco::JSON::Stringifier::stringify bad behaviour
- fixed GH #478: HTTPCredentials not according to HTTP spec
- fixed GH #471: vs2010 release builds have optimization disabled ?
- fixed GH #468: HTTPClientSession/HTTPResponse not forwarding exceptions
- fixed GH #438: Poco::File::setLastModified() doesn't work
- fixed GH #402: StreamSocket::receiveBytes(FIFOBuffer&) and sendBytes(FIFOBuffer&) are
  not thread safe
- fixed GH #345: Linker warning LNK4221 in Foundation for SignalHandler.obj, String.obj
  and ByteOrder.obj
- fixed GH #331: Poco::Zip does not support files with ".." in the name.
- fixed GH #318: Logger local time doesn't automatically account for DST
- fixed GH #294: Poco::Net::TCPServerParams::setMaxThreads(int count) will not accept count == 0.
- fixed GH #215: develop WinCE build broken
- fixed GH #63: Net::NameValueCollection::size() returns int
- Poco::Logger: formatting methods now support up to 10 arguments.
- added Poco::Timestamp::raw()
- Poco::DeflatingOutputStream and Poco::InflatingOutputStreams also flush underlying stream
  on flush()/sync().
- Poco::Util::Timer: prevent re-schedule of cancelled TimerTask
- enabled WinRegistryKey and WinRegistryConfiguration for WinCE
- Poco::BasicEvent improvements and preparations for future support of lambdas/std::function
- upgraded bundled sqlite to 3.8.7.2
- Poco::Thread: added support for starting functors/lambdas
- Poco::Net::HTTPClientSession: added support for global proxy configuration
- added support for OAuth 1.0/2.0 via Poco::Net::OAuth10Credentials and
  Poco::Net::OAuth20Credentials classes.
- Poco::Net::IPAddress: fixed IPv6 prefix handling issue on Windows
- added Poco::Timestamp::TIMEVAL_MIN and Poco::Timestamp::TIMEVAL_MAX
- added Poco::Clock::CLOCKVAL_MIN and Poco::Clock::CLOCKVAL_MAX
- added poco_assert_msg() and poco_assert_msg_dbg() macros
- Poco::Net::Context: fixed a memory leak if the CA file was not found while creating the
  Context object (the underlying OpenSSL context would leak)
- Poco::URI: added new constructor to create URI from Path
- Various documentation and style fixes
- Removed support (project/solution files) for Visual Studio.NET 2003 and Visual Studio 2005.
- Improved CMake support


Release 1.5.4 (2014-10-14)
==========================

- fixed GH #326: compile Net lib 1.5.2 without UTF8 support enabled
- fixed GH #518: NetworkInterface.cpp compile error w/ POCO_NO_WSTRING (1.5.3)
- Fixed MSVC 2010 warnings on large alignment
- make HTTPAuthenticationParams::parse() add value on end of string
- fixed GH #482: Poco::JSON::Stringifier::stringify bad behaviour
- fixed GH #508: Can't compile for arm64 architecture
- fixed GH #510: Incorrect RSAKey construction from istream
- fix SharedMemory for WinCE/WEC2013
- Add NIOS2 double conversion detection, fixes compile errors
- added VS2013 project/solution files for Windows Embedded Compact 2013
- added Process::isRunning()
- NetSSL: Fix typo in documentation
- NetSSL_OpenSSL: support for TLS 1.1 and 1.2
- Zip: Added CM_AUTO, which automatically selects CM_STORE or CM_DEFLATE based
  on file extension. Used to avoid double-compression of already compressed file
  formats such as images.
- added %L modifier to PatternFormatter to switch to local time
- removed unnecessary explicit in some multi-arg constructors
- Allow SecureStreamSocket::attach() to be used in server connections
- added Var::isBoolean() and fixed JSON stringifier
- added poco_unexpected() macro invoking Bugcheck::unexpected() to deal
  with unexpected exceptions in destructors
- fixed GH #538 prevent destructors from throwing exceptions
- improved HTTP server handling of errors while reading header
- fixed GH #545: use short for sign
- upgraded SQLite to 3.8.6
- fixed GH #550 WebSocket fragmented message problem
- improved HTTPClientSession handling of network errors while sending the request
- updated bundled PCRE to 8.35.0
- fixed GH #552: FIFOBuffer drain() problem
- fixed GH #402: StreamSocket::receiveBytes(FIFOBuffer&) and sendBytes(FIFOBuffer&) are
  not thread safe
- HTTPCookie: fix documentation for max age
- added Timestamp::raw() and Clock::raw()
- Poco::Buffer properly handles zero-sized buffers
- GH #512: Poco:Data:ODBC:Binder.h causes a crash
- Added Crypto_Win and NetSSL_Win libraries which are re-implementations of existing
  Crypto and NetSSL_OpenSSL libraries based on WinCrypt/Schannel. The new libraries
  can be used as an almost drop-in replacement for the OpenSSL based libraries on
  Windows and Windows Embedded Compact platforms. Only available from GitHub for now.


Release 1.5.3 (2014-06-30)
==========================

- fixed GH# 316: Poco::DateTimeFormatter::append() gives wrong result for
  Poco::LocalDateTime
- Poco::Data::MySQL: added SQLite thread cleanup handler
- Poco::Net::X509Certificate: improved and fixed domain name verification for
  wildcard domains
- added Poco::Clock class, which uses a system-provided monotonic clock
  (if available) and is thus not affected by system realtime clock changes.
  Monotonic Clock is available on Windows, Linux, OS X and on POSIX platforms
  supporting clock_gettime() and CLOCK_MONOTONIC.
- Poco::Timer, Poco::Stopwatch, Poco::TimedNotificationQueue and Poco::Util::Timer
  have been changed to use Poco::Clock instead of Poco::Timestamp and are now
  unaffected by system realtime clock changes.
- fixed GH# 350: Memory leak in Data/ODBC with BLOB
- Correctly set MySQL time_type for Poco::Data::Date.
- fixed GH #352: Removed redundant #includes and fixed spelling mistakes.
- fixed setting of MYSQL_BIND is_unsigned value.
- fixed GH #360: CMakeLists foundation: add Clock.cpp in the list of source files
- Add extern "C" around <net/if.h> on HPUX platform.
- added runtests.sh
- fixed CPPUNIT_IGNORE parsing
- fixed Glob from start path, for platforms not alowing transverse from root (Android)
- added NTPClient (Rangel Reale)
- added PowerShell build script
- added SmartOS build support
- fix warnings in headers
- XMLWriter: removed unnecessary apostrophe escaping (&apos)
- MongoDB: use Int32 for messageLength
- fixed GH #380: SecureSocket+DialogSocket crashes with SIGSEGV when timeout occours
- Improve RSADigestEngine, using Poco::Crypto::DigestEngine to calculate hash before signing
- added Poco::PBKDF2Engine
- Fixed GH #380: SecureSocket+DialogSocket crashes with SIGSEGV when timeout occours
- added support for a 'Priority' attribute on cookies.
- GH #386: fixed bug in MailMessage without content-transfer-encoding header
- GH #384: ew hash algorithms support for RSADigestEngine
- fixed Clock overflow bug on Windows
- Poco::ByteOrder now uses intrinsics, if available
- CMake: added /bigobj option for msvc
- Fix typo to restore Net/TestSuite_x64_vs120 build
- correct path for CONFIGURE_FILE in CMakeLists.txt
- Building Poco 1.5.2 for Synology RS812+ (Intel Atom) (honor POCO_NO_INOTIFY)
- added WEC2013 support to buildwin.cmd and buildwin.ps1
- HTMLForm: in URL encoding, percent-encode more characters
- Fixed #include <linux/if.h> conflict with other libraries
- Poco::Net::X509Certificate::verify() no longer uses DNS reverse lookups to validate host names
- cert hostname validation is case insensitive and stricter for wildcard certificates
- TCPServer: do not reduce the capacity of the default ThreadPool
- added POCO_LOG_DEBUG flag
- Zip: fixed a crash caused by an I/O error
- added runtest script for windows
- added SQlite Full Text Search support
- added Thread::trySleep() and Thread::wakeUp()
- fixed GH #410: Bug in JSON::Object.stringify() in 1.5.2
- fixed GH #362: Defect in Var::parseString when there is no space between value and newline
- fixed GH #314: JSON parsing bug
- added GH #313: MetaColumn additions for Data::ODBC and Data::SQLite
- fixed GH #346: Make Poco::Data::Date and Poco::Data::Time compare functions const.
- fixed GH #341: Compiling poco-1.5.2 for Cygwin
- fixed GH #305: There are bugs in Buffer.h
- fixed GH #321: trivial build fixes (BB QNX build)
- fixed GH #440: MongoDB ObjectId string formatting
- added SevenZip library (Guenter Obiltschnig)
- fixed GH #442: Use correct prefix length field of Windows IP_ADAPTER_PREFIX structure
- improved GH #328: NetworkInterface on Windows XP
- fixed GH #154 Add support for MYSQL_TYPE_NEWDECIMAL to Poco::Data::MySQL
- fixed GH #290: Unicode support
- fixed GH #318: Logger local time doesn't automatically account for DST
- fixed GH #363: DateTimeParser tryParse/parse
- added HTMLForm Content-Length calculation (Rangel Reale)
- Make TemporaryFile append a slash to tempDir
- fixed GH #319 android build with cmake
- added hasDelegates() method to AbstractEvent
- fixed GH #230: Poco::Timer problem
- fixed GH #317: Poco::Zip does not support newer Zip file versions.
- fixed GH #176: Poco::JSON::Stringifier UTF encoding
- fixed GH #458: Broadcast address and subnet mask for IEEE802.11 network interface
- fixed GH #456: poco: library install dirs per RUNTIME/LIBRARY/ARCHIVE


Release 1.5.2 (2013-09-16)
==========================

- added MongoDB library
- fixed GH #57: poco-1.5.1: Doesn't compile for Android
- added VoidEvent (Arturo Castro)
- fixed GH #80: NumberFormatter::append broken
- fixed GH #93: ParallelSocketAcceptor virtual functions
- optional small object optimization for IPAddress, SocketAddress, Any and Dynamic::Var
- SQLite events (insert, update, delete, commit, rollback) handlers
- merged GH #91: Improve SQLite multi-threaded use (Rangel Reale)
- merged GH #86: Invalid pointers to vector internals (Adrian Imboden)
- automatic library initialization macros
- fixed GH #110: WebSocket accept() fails when Connection header contains multiple tokens
- fixed GH #71: WebSocket and broken Timeouts (POCO_BROKEN_TIMEOUTS)
- fixed a warning in Poco/Crypto/OpenSSLInitializer.h
- fixed GH #109: Bug in Poco::Net::SMTPClientSession::loginUsingPlain
- added clang libc++ build configurations for Darwin and iPhone (Andrea Bigagli)
- fixed GH #116: Wrong timezone parsing in DateTimeParse (Matej Knopp)
- fixed GH #118: JSON::Object::stringify endless loop
- added Recursive and SortedDirectoryIterator (Marian Krivos)
- added ListMap (map-like container with preserving insertion order)
- MailMessage: attachments saving support and consistent read/write
- fixed GH #124: Possible buffer overrun in Foundation/EventLogChannel
- fixed GH #119: JSON::Object holds values in ordered map
- added JSON::PrintHandler
- renamed JSON::DefaultHandler to ParseHandler (breaking change!)
- fixed GH #127: Eliminate -Wshadow warnings
- fixed GH #79: Poco::Thread leak on Linux
- fixed GH #61: static_md build configs for Crypto and NetSSL
- fixed GH #130: prefer sysconf over sysctlbyname
- fixed GH #131: no timezone global var on OpenBSD
- fixed GH #102: Some subprojects don't have x64 solutions for VS 2010
- added GH #75: Poco::Uri addQueryParameter method
- Poco::Environment::osDisplayName() now recognizes Windows 8/Server 2012
- fixed GH #140: Poco::Runnable threading cleanup issue
- simplified default TCP/HTTPServer construction
- fixed GH #141: Application::run() documentation/implementation discrepancy
- changed RowFormatter to SharedPtr<RowFormatter> in Data::RecordSet interface (breaking change!)
- fixed GH #144: Poco::Dynamic emits invalid JSON
- removed naked pointers from Data interfaces
- fixed GH #82: name conflict in Data::Keywords::bind
- fixed GH #157: MySQL: cannot bind to 'long' data type on Windows/Visual C++
- fixed GH #158: MySQL: MYSQL_BIND 'is_unsigned' member is not set
- fixed GH #160: MultipartReader ignores first part, if preamble is missing
- fixed GH #156: Possible buffer overrun in Foundation/EventLogChannel
- XML: fixed an issue with parsing a memory buffer > 2 GB
- upgraded to expat 2.1.0
- Data/ODBC: added support for setting query timeout (via setProperty
  of "queryTimeout"). Timeout is int, given in seconds.
- fixed a potential endless loop in SecureStreamSocketImpl::sendBytes()
  and also removed unnecessary code.
- fixed GH #159: Crash in openssl CRYPTO_thread_id() after library libPocoCrypto.so
  has been unloaded.
- fixed GH #155: MailOutputStream mangles consecutive newline sequences
- fixed GH #139: FileChannel::PROP_FLUSH is invalid (contains a tab character)
- fixed GH #173: HTTPClientSession::proxyConnect forces DNS lookup of host names
- fixed GH #194: MessageNotification constructor is inefficient.
- fixed GH #189: Poco::NumberParser::tryParse() documentation bug
- fixed GH #172: IPv6 Host field is stripped of Brackets in HTTPClientSession
- fixed GH #188: Net: SocketAddress operator < unusable for std::map key
- fixed GH #128: DOMWriter incorrectly adds SYSTEM keyword to DTD if PUBLIC is
  already specified
- fixed GH #65: Poco::format() misorders sign and padding specifiers
- upgraded bundled SQLite to 3.7.17
- replaced JSON parser with Poco::Web::JSON parser (from sandbox)
- added JSON conversion to Dynamic Struct and Array
- added VarIterator
- modified behavior of empty Var (empty == empty)
- added Alignment.h header for C++03 alignment needs
- added Data/WebNotifier (DB, WebSocket) example
- fixed GH #209: Poco::NumberFormatter double length
- fixed GH #204: Upgrade zlib to 1.2.8
- fixed GH #198: The "application.configDir" property is not always created.
- fixed GH #185: Poco::NumberFormatter::format(double value, int precision)
  ignore precision == 0
- fixed GH #138: FreeBSD JSON tests fail
- fixed GH #99: JSON::Query an JSON::Object
- limited allowed types for JSON::Query to Object, Array, Object::Ptr,
  Array::Ptr and empty
- fixed GH #175: HTMLForm does not read URL parameters on POST or PUT
- added GH #187: MySQL: allow access to the underlying connection handle
- added GH #186: MySQL: support for MYSQL_SECURE_AUTH
- fixed GH #174: MySQL: 4GB allocated when reading any largetext or largeblob field
- fixed a potential memory leak in Poco::Net::HTTPClientSession if it is misused
  (e.g., sendRequest() is sent two times in a row without an intermediate call to
  receiveResponse(), or by calling receiveResponse() two times in a row without
  an intermediate call to sendRequest()) - GH #217
- removed a few unnecessary protected accessor methods from Poco::Net::HTTPClientSession
  that would provide inappropriate access to internal state
- merged GH #210: Don't call CloseHandle() twice on Windows; Ability to select the
  threadpool that will be used to start an Activity(Patrice Tarabbia)
- fixed GH #212: JSONConfiguration was missing from the vs90 project(Patrice Tarabbia)
- fixed GH #220: add qualifiers for FPEnvironment in C99 (Lucas Clemente)
- fixed GH #222: HTTPCookie doesn't support expiry times in the past (Karl Reid)
- fixed GH #224: building 1.5.1 on Windows for x64
- fixed GH# 233: ServerSocket::bind6(Poco::UInt16 port, bool reuseAddress, bool ipV6Only) does not work
- fixed GH# 231: Compatibility issue with Poco::Net::NetworkInterface
- fixed GH# 236: Bug in RecursiveDirectoryIterator
- added ColorConsoleChannel and WindowsColorConsoleChannel classes supporting
  colorizing log messages
- fixed GH# 259: Poco::EventLogChannel fails to find 64bit Poco Foundation dll
- fixed GH# 254: UTF8::icompare unexpected behavior
- Poco::UUID::tryParse() also accepts UUIDs without hyphens. Also updated documentation
  (links to specifications).
- added GH# 268: Method to get JSON object value using Poco::Nullable
- fixed GH# 267: JSON 'find' not returning empty result if object is expected but another value is found
- Added support for ARM64 architecture and iPhone 5s 64-bit builds
  (POCO_TARGET_OSARCH=arm64).


Release 1.5.1 (2013-01-11)
==========================

- using double-conversion library for floating-point numeric/string conversions
- added Poco::istring (case-insensitive string) and Poco::isubstr
- added SQLite sys.dual (in-memory system table)
- applied SF Patch #120: The ExpireLRUCache does not compile with a tuple as key on Visual Studio 2010
- fixed SF Bug #599: JSON::Array and JSON::Object size() member can implicitly lose precision
- fixed SF Bug #602: iterating database table rows not correct if no data in table
- fixed SF Bug #603: count() is missing in HashMap
- fixed GH #23: JSON::Object::stringify throw BadCastException
- fixed GH #16: NetworkInterface::firstAddress() should not throw on unconfigured interfaces
- Android compile/build support (by Rangel Reale)
- TypeHandler::prepare() now takes const-reference
- fixed GH #27: Poco::URI::decode() doesn't properly handle '+'
- fixed GH #31: JSON implementation bug
- fixed SF #597: Configure script ignores cflags
- fixed SF #593: Poco 1.5.0 on FreeBSD: cannot find -ldl
- added SF #542: SocketAddress() needs port-only constructor
- fixed SF #215: Wrong return type in SocketConnector.h
- applied SF Patch #97: fix c++0x / clang++ bugs
- fixed GH32/SF596: Poco::JSON: Parsing long integer (int64) value fails.
- added Net ifconfig sample (contributed by Philip Prindeville)
- merged GH #34: add algorithm header (Roger Meier/Philip Prindeville)
- fixed GH #26: Cannot compile on gcc
- merged SF #111: FTP Client logging (Marian Krivos)
- fixed GH #30: Poco::Path::home() throws when called from Windows Service
- fixed GH #22: MySQL connection string lowercased
- added MySQL support for Date/Time
- upgraded SQLite to version 3.7.15.1 (2012-12-19)
- improved SQLite execute() return (affected rows) value and added tests
- added SQLite::Utility::isThreadSafe() function
- added SQLite::Utility::setThreadMode(int mode) function
- fixed GH #36: 'distclean' requires 3 traversals of project tree
- fixed GH #41: Buffer::resize crash
- fixed GH #42: Linux unbundled builds don't link
- fixed GH #44: Problems with win x64 build
- fixed GH #46: 1.5.1 build fails on OS X when using libc++
- fixed GH #48: Need getArgs() accessor to Util::Application to retrieve start-up arguments
- fixed GH #49: NetworkInterface::list doesn't return MAC addresses
- fixed GH #51: Android should use isfinite, isinf, isnan and signbit from the std namespace
- fixed GH #53: JSON unicode fixes and running tests on invalid unicode JSON
- added ParallelAcceptor and ParallelReactor classes
- added EOF and error to FIFOBuffer


Release 1.5.0 (2012-10-14)
==========================

- added JSON library
- added Util::JSONConfiguration
- added FIFOBuffer and FIFOBufferStream
- fixed SF# 3522906: Unregistering handlers from SocketReactor
- fixed SF# 3522084: AbstractConfiguration does not support 64-bit integers
- HTTPServer::stopAll(): close the socket instead of just shutting it down, as the latter won't wake up a select() on Windows
- added SMTPLogger
- added cmake support
- fixed SF#3538778: NetworkInterface enumeration uses deprecated API
- fixed SF#3538779: IPAddress lacks useful constructors: from prefix mask, native SOCKADDR
- fixed SF#3538780: SocketAddress needs operator < function
- fixed SF#3538775: Issues building on Fedora/Centos, etc. for AMD64
- fixed SF#3538786: Use size_t for describing data-blocks in DigestEngine
- added IPAddress bitwise operators (&,|,^,~)
- added IPAddress BinaryReader/Writer << and >> operators
- modified IPAddress to force IPv6 to lowercase (RFC 5952)
- fixed SF#3538785: SMTPClientSession::sendMessage() should take recipient list
- added IPAddress::prefixLength()
- UTF portability improvements
- fixed SF#3556186: Linux shouldn't use <net/if.h> in Net/SocketDefs.h
- added IPAddress RFC 4291 compatible site-local prefix support
- fixed SF#3012166: IPv6 patch
- added SF#3558085: Add formatter to MACAddress object
- fixed SF#3552774: Don't hide default target in subordinate makefile
- fixed SF#3534307: Building IPv6 for Linux by default
- fixed SF#3516844: poco missing symbols with external >=lipcre-8.13
- added SF#3544720: AbstractConfigurator to support 64bit values
- fixed SF#3522081: WinRegistryConfiguration unable to read REG_QWORD values
- fixed SF#3563626: For Win32 set Up/Running flags on NetworkInterface
- fixed SF#3560807: Deprecate setPeerAddress() as this is now done in getifaddrs
- fixed SF#3560776: Fix byte-ordering issues with INADDR_* literals
- fixed SF#3563627: Set IP address on multicast socket from socket family
- fixed SF#3563999: Size BinaryWriter based on buffer's capacity(), not size()
- fixed SF#102 Fix building Poco on Debian GNU/kFreeBSD
- fixed SF#321 Binding DatTime or Timestamp
- fixed SF#307 Detect the SQL driver type at run time
- added VS 2012 Projects/Solutions
- enhanced and accelerated numeric parsing for integers and floats
- fixed SF#590 Segfault on FreeBSD when stack size not rounded
- added warn function and warnmsg macro in CppUnit
- fixed SF# 3558012 Compilation fails when building with -ansi or -std=c++0x
- fixed SF# 3563517 Get rid of loss-of-precision warnings on x64 MacOS
- fixed SF#3562244: Portability fix for AF_LINK
- fixed SF #3562400: DatagramSocketImpl comment is incorrect


Release 1.4.7p1 (2014-11-25)
============================

- Fixed Visual C++ 2010-2013 project files. Release builds now have optimization enabled.
- Poco::URI: added constructor to create URI from Path.
- fixed GH #618: OS X 10.10 defines PAGE_SIZE macro, conflicts with PAGE_SIZE in Thread_POSIX.cpp
- Poco::Net::HTTPClientSession: added support for global proxy configuration
- fixed GH #331: Poco::Zip does not support files with .. in the name.
- fixed a memory leak in Poco::Net::Context constructor when it fails to load the certificate
  or private key files.
- upgraded bundled SQLite to 3.8.7.2
- fixed GH #229: added missing value() function
- fixed GH #69: MySQL empty text/blob


Release 1.4.7 (2014-10-06)
==========================

- fixed GH #398: PropertyFileConfiguration: input != output
- fixed GH #368: Build failure of Poco 1.4.6p2 on FreeBSD 9.2
- fixed GH #318: Logger local time doesn't automatically account for DST
- fixed GH #317: Poco::Zip does not support newer Zip file versions.
- fixed GH #454: Fix: handle unhandled exceptions
- fixed GH #463: XML does not compile with XML_UNICODE_WCHAR_T
- fixed GH #282: Using Thread in a global can cause crash on Windows
- fixed GH #424: Poco::Timer deadlock
- fixed GH #465: Fix result enum type XML_Error -> XML_Status
- fixed GH #510: Incorrect RSAKey construction from istream
- fixed GH #332: POCO::ConsoleChannnel::initColors() assigns no color to
  PRIO_TRACE and wrong color to PRIO_FATAL
- fixed GH #550: WebSocket fragmented message problem
- Poco::Data::MySQL: added SQLite thread cleanup handler
- Poco::Net::X509Certificate: improved and fixed domain name verification for
  wildcard domains
- fixed a crash in Foundation testsuite with Visual C++ 2012
- improved and fixed domain name verification for wildcard domains in
  Poco::Net::X509Certificate
- updated TwitterClient sample to use new 1.1 API and OAuth
- added Poco::Clock class, which uses a system-provided monotonic clock
  (if available) and is thus not affected by system realtime clock changes.
  Monotonic Clock is available on Windows, Linux, OS X and on POSIX platforms
  supporting clock_gettime() and CLOCK_MONOTONIC.
- Poco::Timer, Poco::Stopwatch, Poco::TimedNotificationQueue and Poco::Util::Timer
  have been changed to use Poco::Clock instead of Poco::Timestamp and are now
  unaffected by system realtime clock changes.
- added Poco::PBKDF2Engine class template
- Poco::Net::HTTPCookie: added support for Priority attribute (backport from develop)
- fixed makedepend.* scripts to work in paths containing '.o*'
  (contributed by Per-Erik Bjorkstad, Hakan Bengtsen)
- Upgraded bundled SQLite to 3.8.6
- Support for Windows Embedded Compact 2013 (Visual Studio 2012)
- Project and solution files for Visual Studio 2013
- Changes for C++11 compatibility.
- fixed an issue with receiving empty web socket frames (such as ping)
- improved error handling in secure socket classes
- Poco::ByteOrder now uses intrinsics if available
- added new text encoding classes: Latin2Encoding, Windows1250Encoding, Windows1251Encoding
- Zip: Added CM_AUTO, which automatically selects CM_STORE or CM_DEFLATE based on file extension.
  Used to avoid double-compression of already compressed file formats such as images.


Release 1.4.6p4 (2014-04-18)
============================

- no longer use reverse DNS lookups for cert hostname validation
- cert hostname validation is case insensitive and more strict
- HTMLForm: in URL encoding, percent-encode more special characters
- fixed thread priority issues on POSIX platforms with non-standard scheduling policy
- XMLWriter no longer escapes apostrophe character
- fixed GH #316: Poco::DateTimeFormatter::append() gives wrong result for Poco::LocalDateTime
- fixed GH #305 (memcpy in Poco::Buffer uses wrong size if type != char)
- Zip: fixed a crash caused by an I/O error (e.g., full disk) while creating a Zip archive


Release 1.4.6p3 (2014-04-02)
============================

- Fixed a potential security vulnerability in client-side X509
  certificate verification.


Release 1.4.6p2 (2013-09-16)
============================

- fixed GH #156: Possible buffer overrun in Foundation/EventLogChannel
- XML: fixed an issue with parsing a memory buffer > 2 GB
- upgraded to expat 2.1.0
- Data/ODBC: added support for setting query timeout (via setProperty
  of "queryTimeout"). Timeout is int, given in seconds.
- fixed a potential endless loop in SecureStreamSocketImpl::sendBytes()
  and also removed unnecessary code.
- fixed GH #159: Crash in openssl CRYPTO_thread_id() after library libPocoCrypto.so
  has been unloaded.
- fixed GH #155: MailOutputStream mangles consecutive newline sequences
- fixed GH# 139: FileChannel::PROP_FLUSH is invalid (contains a tab character)
- fixed GH# 173: HTTPClientSession::proxyConnect forces DNS lookup of host names
- fixed GH# 194: MessageNotification constructor is inefficient.
- fixed GH# 189: Poco::NumberParser::tryParse() documentation bug
- fixed GH# 172: IPv6 Host field is stripped of Brackets in HTTPClientSession
- fixed GH# 188: Net: SocketAddress operator < unusable for std::map key
- fixed GH# 128: DOMWriter incorrectly adds SYSTEM keyword to DTD if PUBLIC is
  already specified
- fixed GH# 65: Poco::format() misorders sign and padding specifiers
- upgraded bundled SQLite to 3.7.17
- upgraded bundled zlib to 1.2.8
- fixed a potential memory leak in Poco::Net::HTTPClientSession if it is misused
  (e.g., sendRequest() is sent two times in a row without an intermediate call to
  receiveResponse(), or by calling receiveResponse() two times in a row without
  an intermediate call to sendRequest()) - GH #217
- removed a few unnecessary protected accessor methods from Poco::Net::HTTPClientSession
  that would provide inappropriate access to internal state
- fixed GH# 223 (Poco::Net::HTTPCookie does not support expiry times in the past)
- fixed GH# 233: ServerSocket::bind6(Poco::UInt16 port, bool reuseAddress, bool ipV6Only)
  does not work
- added ColorConsoleChannel and WindowsColorConsoleChannel classes supporting
  colorizing log messages
- fixed GH# 259: Poco::EventLogChannel fails to find 64bit Poco Foundation dll
- fixed GH# 254: UTF8::icompare unexpected behavior
- Poco::UUID::tryParse() also accepts UUIDs without hyphens. Also updated documentation
  (links to specifications).
- Added support for ARM64 architecture and iPhone 5s 64-bit builds
  (POCO_TARGET_OSARCH=arm64).


Release 1.4.6p1 (2013-03-06)
============================

- fixed GH# 71: WebSocket and broken Timeouts (POCO_BROKEN_TIMEOUTS)
- fixed an ambiguity error with VC++ 2010 in Data/MySQL testsuite
- Poco::Net::NetworkInterface now provides the interface index even for IPv4
- added DNS::reload() as a wrapper for res_init().
- On Linux, Poco::Environment::nodeId() first always tries to obtain the
  MAC address of eth0, before looking for other interfaces.
- Poco::Net::HTTPSession now always resets the buffer in connect() to clear
  any leftover data from a (failed) previous session
- fixed copysign namespace issue in FPEnvironment_DUMMY.h
- fixed a warning in Poco/Crypto/OpenSSLInitializer.h
- added a build configuration for BeagleBoard/Angstrom
- fixed GH# 109: Bug in Poco::Net::SMTPClientSession::loginUsingPlain)
- fixed compile errors with clang -std=c++11
- fixed GH# 116: Wrong timezone parsing in DateTimeParse (fix by Matej Knopp)
- updated bundled SQLite to 3.7.15.2


Release 1.4.6 (2013-01-10)
==========================

- changed FPEnvironment_DUMMY.h to include <cmath> instead of <math.h>
- updated bundled SQLite to 3.7.15.1
- fixed GH# 30: Poco::Path::home() throws
- fixed SF Patch# 120 The ExpireLRUCache does not compile with a tuple as key on VS2010
- fixed SF# 603 count() is missing in HashMap
- Crypto and NetSSL_OpenSSL project files now use OpenSSL *MD.lib library files for
  static_md builds. Previously, the DLL import libs were used.
- Poco::Environment::osDisplayName() now recognizes Windows 8/Server 2012


Release 1.4.5 (2012-11-19)
==========================

- added Visual Studio 2012 project files
- buildwin.cmd now support building with msbuild for VS2010 and 2012.
- added Poco::Optional class
- fixed SF# 3558012 Compilation fails when building with -ansi or -std=c++0x
- fixed SF# 3563517 Get rid of loss-of-precision warnings on x64 MacOS
- fixed SF# 3562244: Portability fix for AF_LINK
- fixed SF# 3562400: DatagramSocketImpl comment
- fixed SF# 594: Websocket fails with small masked payloads
- fixed SF# 588: Missing POCO_ARCH and POCO_ARCH_LITTLE_ENDIAN define for WinCE on SH4
- fixed SF# 581: Out-of-bound array access in Unicode::properties() function.
- fixed SF# 590: Segfault on FreeBSD when stack size not rounded
- fixed SF# 586: Poco::DateTimeParser and ISO8601 issues when seconds fraction has more than 6 digits
- Poco::Net::HTTPSSessionInstantiator::registerInstantiator() now optionally accepts a
  Poco::Net::Context object.
- added Poco::XML::XMLWriter::depth() member function.
- added Poco::XML::XMLWriter::uniquePrefix() and Poco::XML::XMLWriter::isNamespaceMapped().
- Poco::FileChannel now supports a new rotateOnOpen property (true/false) which can be used
  to force rotation of the log file when it's opened.
- fixed a bug in Poco::XML::XMLWriter::emptyElement(): need to pop namespace context
- OS X builds now use Clang as default compiler
- Updated SQLite to 3.7.14.1
- POCO_SERVER_MAIN macro now has a try ... catch block for Poco::Exception and writes
  the displayText to stderr.
- Poco/Platform.h now defines POCO_LOCAL_STATIC_INIT_IS_THREADSAFE macro if the compiler
  generates thread-safe static local initialization code.


Release 1.4.4 (2012-09-03)
==========================

- ZipStream now builds correctly in unbundled build.
- added proxy digest authentication support to Net library
- integrated MySQL BLOB fixes from Franky Braem.
- use standard OpenSSL import libraries (libeay32.lib, ssleay32.lib) for Crypto and
  NetSSL_OpenSSL Visual Studio project files.
- fixed a potential buffer corruption issue in Poco::Net::SecureStreamSocket if lazy
  handshake is enabled and the first attempt to complete the handshake fails
- Poco::DateTimeParser::tryParse() without format specifier now correctly parses ISO8601
  date/times with fractional seconds.
- Poco::Process::launch() now has additional overloads allowing to specify an initial
  directory and/or environment.
- Poco::Net::FTPClientSession: timeout was not applied to data connection, only to
  control connection.
- Fixed potential IPv6 issue with socket constructors if IPv6 SocketAddress is given
  (contributed by ??????? ????????? <[email protected]>).
- Added an additional (optional) parameter to Poco::Thread::setOSPriority() allowing to
  specify a scheduling policy. Currently this is only used on POSIX platforms and allows
  specifying SCHED_OTHER (default), SCHED_FIFO or SCHED_RR, as well as other
  platform-specific policy values.
- Added Poco::Crypto::DigestEngine class providing a Poco::DigestEngine interface to
  the digest algorithms provided by OpenSSL.
- Fixed some potential compiler warnings in Crypto library
- In some cases, when an SSL exception was unexpectedly closed, a generic Poco::IOException
  was thrown. This was fixed to throw a SSLConnectionUnexpectedlyClosedException instead.
- Added Poco::ObjectPool class template.
- Poco::Net::HTTPServer has a new stopAll() method allowing stopping/aborting of all
  currently active client connections.
- The HTTP server framework now actively prevents sending a message body in the
  response to a HEAD request, or in case of a 204 No Content or 304 Not Modified
  response status.
- fixed a DOM parser performance bug (patch by Peter Klotz)
- fixed SF# 3559325: Util Windows broken in non-Unicode
- updated iOS build configuration to use xcode-select for finding toolchain
- Poco::Net::SecureSocketImpl::shutdown() now also shuts down the underlying socket.
- fixed SF# 3552597: Crypto  des-ecb error
- fixed SF# 3550553: SecureSocketImpl::connect hangs
- fixed SF# 3543047: Poco::Timer bug for long startInterval/periodic interval
- fixed SF# 3539695: Thread attributes should be destroyed using the pthread_attr_destroy()
- fixed SF# 3532311: Not able to set socket option on ServerSocket before bind
  Added Poco::Net::Socket::init(int af) which can be used to explicitely
  initialize the underlying socket before calling bind(), connect(), etc.
- fixed SF# 3521347: Typo in UnWindows.h undef
- fixed SF# 3519474: WinRegistryConfiguration bug
  Also added tests and fixed another potential issue with an empty root path passed to the constructor.
- fixed SF# 3516827: wrong return value of WinRegistryKey::exists()
- fixed SF# 3515284: RSA publickey format(X.509 SubjectPublicKeyInfo)
- fixed SF# 3503267: VxWorks OS prio is not set in standard constructor
- fixed SF# 3500438: HTTPResponse failure when reason is empty
- fixed SF# 3495656: numberformater, numberparser error in mingw
- fixed SF# 3496493: Reference counting broken in TaskManager postNotification
- fixed SF# 3483174: LogFile flushing behavior on Windows
  Flushing is now configurable for FileChannel and SimpleFileChannel
  using the "flush" property (true or false).
- fixed SF# 3479561: Subsequent IPs on a NIC is not enumerated
- fixed SF# 3478665: Permission checks in Poco::File not correct for root
- fixed SF# 3475050: Threading bug in initializeNetwork() on Windows
- fixed SF# 3552680: websocket small frames bug and proposed fix
- fixed a WebSocket interop issue with Firefox
- added Poco::Net::MessageHeader::hasToken()
- Poco::AtomicCounter now uses GCC 4.3 builtin atomics on more platforms
- fixed SF# 3555938: NetSSL: socket closed twice
- socket exceptions now include OS error code
- fixed SF# 3556975: Need to fix Shared Memory for memory map
- Poco::Net::SecureSocketImpl::close() now catches exceptions thrown by its call to shutdown().
- fixed SF# 3535990: POCO_HAVE_IPv6 without POCO_WIN32_UTF8 conflict
- fixed SF# 3559665: Poco::InflatingInputStream may not always inflate completely
- added Poco::DirectoryWatcher class
- fixed SF# 3561464: Poco::File::isDevice() can throw due to sharing violation
- Poco::Zip::Compress::addRecursive() has a second variant that allows to specify the compression method.
- Upgraded internal SQLite to 3.7.14


Release 1.4.3p1 (2012-01-23)
============================

- fixed SF# 3476926: RegDeleteKeyEx not available on Windows XP 32-bit


Release 1.4.3 (2012-01-16)
==========================

- fixed a compilation error with Data/MySQL on QNX.
- fixed Util project files for WinCE (removed sources not compileable on CE)
- removed MD2 license text from Ackowledgements document
- fixed iPhone build config for Xcode 4.2 (compiler name changed to llvm-g++)
- Poco::Util::XMLConfiguration: delimiter char (default '.') is now configurable.
  This allows for working with XML documents having element names with '.' in them.
- Poco::Util::OptionProcessor: Required option arguments can now be specified as
  separate command line arguments, as in "--option value" in addition to the
  "--option=value" format.
- Poco::Util::HelpFormatter: improved option help formatting if  indentation has
  been set explicitely.
- added Mail sample to NetSSL_OpenSSL, showing use of Poco::Net::SecureSMTPClientSession.
- added additional read() overloads to Poco::Net::HTMLForm.
- fixed SF# 3440769: Poco::Net::HTTPResponse doesn't like Amazon EC2 cookies.
- added support for requiring TLSv1 to Poco::Net::Context.
- added an additional constructor to Poco::Net::HTTPBasicCredentials, allowing
  the object to be created from a string containing a base64-encoded, colon-separated
  username and password.
- Poco::Zip::ZipStreamBuf: fixed a crash if CM_STORE was used.
- Added setContentLength64() and getContentLength64() to Poco::Net::HTTPMessage.
- added Poco::Environment::osDisplayName().
- fixed SF# 3463096: WinService leaves dangling handles (open() now does not reopen the
  service handle if it's already open)
- fixed SF# 3426537: WinRegistryConfiguration can't read virtualized keys
- added Poco::Buffer::resize()
- fixed SF# 3441822: thread safety issue in HTTPClientSession:
  always use getaddrinfo() instead of gethostbyname() on all platforms supporting it
- added version resource to POCO DLLs
- fixed SF# 3440599: Dir Path in Quotes in PATH cause PathTest::testFind to fail.
- fixed SF# 3406030: Glob::collect problem
- added Poco::Util::AbstractConfiguration::enableEvents()
- Poco::AtomicCounter now uses GCC builtins with GCC 4.1 or newer
  (contributed by Alexey Milovidov)
- made Poco::Logger::formatDump() public as it may be useful for others as well
  (SF# 3453446)
- Poco::Net::DialogSocket now has a proper copy constructor (SF# 3414602)
- Poco::Net::MessageHeader and Poco::Net::HTMLForm now limit the maximum number of
  fields parsed from a message to prevent certain kinds of denial-of-service
  attacks. The field limit can be changed with the new method setFieldLimit().
  The default limit is 100.
- Poco::NumberFormatter, Poco::NumberParser and Poco::format() now always use the
  classic ("C") locale to format and parse floating-point numbers.
- added Poco::StreamCopier::copyStream64(), Poco::StreamCopier::copyStreamUnbuffered64()
  and Poco::StreamCopier::copyToString64(). These functions use a 64-bit integer
  to count the number of bytes copied.
- upgraded internal zlib to 1.2.5
- upgraded internal sqlite to 3.7.9
- XML: integrated bugfix for Expat bug# 2958794 (memory leak in poolGrow)
- Added support for HTTP Digest authentication (based on a contribution by
  Anton V. Yabchinskiy (arn at bestmx dot ru)). For information on how
  to use this, see the Poco::Net::HTTPCredentials, Poco::Net::HTTPDigestCredentials
  and Poco::Net::HTTPAuthenticationParams classes.
- Poco::Net::HTTPStreamFactory and Poco::Net::HTTPSStreamFactory now support Basic
  and Digest authentication. Username and password must be provided in the URI.
- added Poco::Net::WebSocket, supporting the WebSocket protocol as described in RFC 6455
- NetSSL_OpenSSL: added client-side support for Server Name Indication.
  Poco::Net::SecureSocketImpl::connectSSL() now calls SSL_set_tlsext_host_name()
  if its available (OpenSSL 9.8.6f and later).
- added Poco::Net::HTTPClientSession::proxyConnect() (factored out from
  Poco::Net::HTTPSClientSession::connect())
- added Poco::Process::kill(const Poco::ProcessHandle&) which is preferable to
  kill(pid) on Windows, as process IDs on Windows may be reused.
- fixed SF# 3471463: Compiler warnings with -Wformat
- Poco::Util::Application::run() now catches and logs exceptions thrown in initialize()
- Fixed a WinCE-specific bug in Poco::Util::ServerApplication where uninitialize() would
  be called twice.
- fixed SF# 3471957: WinRegistryKey::deleteKey() unable to delete alt views
- Added additional constructor to Poco::ScopedLock and Poco::ScopedLockWithUnlock
  accepting a timeout as second argument.
- Added Poco::Logger::parseLevel()
- Poco::format(): an argument that does not match the format
  specifier no longer results in a BadCastException. The string [ERRFMT] is
  written to the result string instead.
- PageCompiler: added createSession page attribute.
jperkin pushed a commit that referenced this pull request Mar 18, 2016
== 2.1.0 / 2016-03-13

Enhancements
- appender factories now fail explicitly on bad arguments [PR #117]
- console loggers (stdout, stderr) use `write` for compatibility [PR #127]
- allow whitespace in traced method names [PR #128]
- accessor methods for `backtrace` settings [PR #134]
- asynchronous writing from buffered appenders [PR #135]
- improve date format performance when outputting microseconds [PR #136]
- added some thread safety to log level setters [PR #137]
- use `write` everywhere instead of `syswrite` [PR #138]

Bug Fixes
- fixing encodings in tests [PR #116]
- fix Rails4 logger compatibility [PR #121]
- explicitly adding the MIT license [PR #123]
- update `object_id` format in inspect methods [PR #133]
- fixed Travis-CI tests
jperkin pushed a commit that referenced this pull request Jul 17, 2016
--------------------------------------------
Version 5.3.7: (7 May 2016)
 * Fix another MacOS build break, regarding library exports.

Version 5.3.6: (30 April 2016)
 * Add missing `parses-quotes-en.txt` file that python tests need.
 * Fix build break related to lg_fgetc when libeditline is missing.

Version 5.3.5: (28 April 2016)
 * Modified (hacked) Kazakh dictionary.
 * MacOS bug fix: fgetc behaves oddly in OSX, see bug #293.

Version 5.3.4: (16 March 2016)
 * Fix broken handling of apostrophe (issue #281).
 * Revamp the README file; describe transitivity.
 * Revised Turkish dictionary from Tatiana Batura, et al.
 * Prototype Kazakh dictionary from Tatiana Batura, et al.
 * Parse priority tweaks for the OpenCog chatbot.
 * Fix Windows printing problem affecting some utf8 codepoints (issue #285).

Version 5.3.3: (23 December 2015)
 * Improve support for quoted phrases.
 * Fixes for assorted zero-infinitive speech acts.
 * Add 37 paraphrasing verbs.
 * Add Greek mythological names.
 * A few dozen more common computing terms added to dictionary.
 * Misc coordination and question fixes.
 * Misc abbreviations.
 * Vietnamese dictionaries!
 * Major overhaul of subject-verb inversion.
 * Performance improvements on long sentences. (pull #247)
 * Change default setting of 'islands_ok' back to false (bug #140).
 * Fix for build break on Mac OSX el_capitan w/clang (bug #255).
 * Disable perl bindings by default; use Lingua::LinkParser

Version 5.3.2: (4 December 2015)
 * Performance improvements, esp. for long sentences.
 * Use std=c11 (the 2011 C standard) by default.
 * Partial Irish English support.
 * A few dozen common computing terms added to dictionary.
 * Fix for build break on Mac OSX.

Version 5.3.1: (22 November 2015)
 * Fix build break with SAT solver.

Version 5.3.0: (22 November 2015)
 * Major redesign of the python bindings.
 * Major redesign of sentence tokenization (the "wordgraph" design)
 * Verb 'steal' is optionally transitive.
 * Fixes for misc MSVC warnings.
 * Hebrew dictionary expansion.
 * Enhanced diagram printing, giving more space for link names.
 * Minor work on phonetic agreement for 'a' vs. 'an'.
 * Add ability to histogram the costs of different parses.
 * Improve support for splitting sentences.
 * Change default setting of 'islands_ok' to true.
 * Improve performance on long sentences.
 * Fix rare crash due to memory corruption on long sentences.
 * Random morphology generation can be enabled at runtime.
 * Remove obsolete, unmaintained MacOSX build file.
 * Extensive updates to man page.
 * Fix crash on long sentences (issue #137).
 * Fix a memory leak in language bindings (issue #138).
 * Remove bogus post-processor API function.
 * Fix broken domain letter printing.
 * New regex-file feature - negative regex'es.
 * Correct the handling of moprhology stems with non-LL links.
 * Fix !!LEFT-WALL and !!RIGHT-WALL
 * SAT solver now linked statically.
 * Assorted SAT sovler cleanup and improvements.
 * Performance improvement in fast matcher: 15% faster on fixes.batch.
jperkin pushed a commit that referenced this pull request Jun 20, 2017
This release contains mostly feature requests.

Features:

    The stats1 verb now lets you use regular expressions to specify
    which field names to compute statistics on, and/or which to
    group by. Full details are here.

    The min and max DSL functions, and the min/max/percentile
    aggregators for the stats1 and merge-fields verbs, now support
    numeric as well as string field values. (For mixed string/numeric
    fields, numbers compare before strings.) This means in particular
    that order statistics -- min, max, and non-interpolated percentiles
    -- as well as mode, antimode, and count are now possible on
    string-only (or mixed) fields. (Of course, any operations
    requiring arithmetic on values, such as computing sums, averages,
    or interpolated percentiles, yield an error on string-valued
    input.)

    There is a new DSL function mapexcept which returns a copy of
    the argument with specified key(s), if any, unset. The motivating
    use-case is to split records to multiple filenames depending
    on particular field value, which is omitted from the output:
    mlr --from f.dat put 'tee > "/tmp/data-".$a, mapexcept($*, "a")'
    Likewise, mapselect returns a copy of the argument with only
    specified key(s), if any, set. This resolves #137.

    A new -u option for count-distinct allows unlashed counts for
    multiple field names. For example, with -f a,b and without -u,
    count-distinct computes counts for distinct pairs of a and b
    field values. With -f a,b and with -u, it computes counts for
    distinct a field values and counts for distinct b field values
    separately.

    If you build from source, you can now do ./configure without
    first doing autoreconf -fiv. This resolves #131.

    The UTF-8 BOM sequence 0xef 0xbb 0xbf is now automatically
    ignored from the start of CSV files. (The same is already done
    for JSON files.) This resolves #138.

    For put and filter with -S, program literals such as the 6 in
    $x = 6 were being parsed as strings. This is not sensible, since
    the -S option for put and filter is intended to suppress numeric
    conversion of record data, not program literals. To get string
    6 one may use $x = "6".

Documentation:

    A new cookbook example shows how to compute differences between
    successive queries, e.g. to find out what changed in time-varying
    data when you run and rerun a SQL query.

    Another new cookbook example shows how to compute interquartile
    ranges.

    A third new cookbook example shows how to compute weighted
    means.

Bugfixes:

    CRLF line-endings were not being correctly autodetected when
    I/O formats were specified using --c2j et al.

    Integer division by zero was causing a fatal runtime exception,
    rather than computing inf or nan as in the floating-point case.
jperkin pushed a commit that referenced this pull request Jun 21, 2017
This release contains mostly feature requests.

Features:

    The stats1 verb now lets you use regular expressions to specify
    which field names to compute statistics on, and/or which to
    group by. Full details are here.

    The min and max DSL functions, and the min/max/percentile
    aggregators for the stats1 and merge-fields verbs, now support
    numeric as well as string field values. (For mixed string/numeric
    fields, numbers compare before strings.) This means in particular
    that order statistics -- min, max, and non-interpolated percentiles
    -- as well as mode, antimode, and count are now possible on
    string-only (or mixed) fields. (Of course, any operations
    requiring arithmetic on values, such as computing sums, averages,
    or interpolated percentiles, yield an error on string-valued
    input.)

    There is a new DSL function mapexcept which returns a copy of
    the argument with specified key(s), if any, unset. The motivating
    use-case is to split records to multiple filenames depending
    on particular field value, which is omitted from the output:
    mlr --from f.dat put 'tee > "/tmp/data-".$a, mapexcept($*, "a")'
    Likewise, mapselect returns a copy of the argument with only
    specified key(s), if any, set. This resolves #137.

    A new -u option for count-distinct allows unlashed counts for
    multiple field names. For example, with -f a,b and without -u,
    count-distinct computes counts for distinct pairs of a and b
    field values. With -f a,b and with -u, it computes counts for
    distinct a field values and counts for distinct b field values
    separately.

    If you build from source, you can now do ./configure without
    first doing autoreconf -fiv. This resolves #131.

    The UTF-8 BOM sequence 0xef 0xbb 0xbf is now automatically
    ignored from the start of CSV files. (The same is already done
    for JSON files.) This resolves #138.

    For put and filter with -S, program literals such as the 6 in
    $x = 6 were being parsed as strings. This is not sensible, since
    the -S option for put and filter is intended to suppress numeric
    conversion of record data, not program literals. To get string
    6 one may use $x = "6".

Documentation:

    A new cookbook example shows how to compute differences between
    successive queries, e.g. to find out what changed in time-varying
    data when you run and rerun a SQL query.

    Another new cookbook example shows how to compute interquartile
    ranges.

    A third new cookbook example shows how to compute weighted
    means.

Bugfixes:

    CRLF line-endings were not being correctly autodetected when
    I/O formats were specified using --c2j et al.

    Integer division by zero was causing a fatal runtime exception,
    rather than computing inf or nan as in the floating-point case.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants