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

ignore distfiles, packages, and work directories #31

Closed
wants to merge 1 commit into from
Closed

ignore distfiles, packages, and work directories #31

wants to merge 1 commit into from

Conversation

cobracmder
Copy link

No description provided.

@jperkin
Copy link
Collaborator

jperkin commented Feb 6, 2013

Our trunk is kept pristine compared to upstream, so we wouldn't put these in there. Plus I quite like being warned about these files, as it usually means I haven't properly configured mk.conf to put them elsewhere via DISTDIR, PACKAGES and WRKOBJDIR.

@jperkin jperkin closed this Feb 6, 2013
jperkin pushed a commit that referenced this pull request Jun 5, 2013
------
0.6.43
------

* Issue #378: Restore support for Python 2.4 Syntax (regression in 0.6.42).

------
0.6.42
------

* External links finder no longer yields duplicate links.
* Issue #337: Moved site.py to setuptools/site-patch.py (graft of very old
  patch from setuptools trunk which inspired PR #31).

------
0.6.41
------

* Issue #27: Use public api for loading resources from zip files rather than
  the private method `_zip_directory_cache`.
* Added a new function ``easy_install.get_win_launcher`` which may be used by
  third-party libraries such as buildout to get a suitable script launcher.
jperkin pushed a commit that referenced this pull request Nov 1, 2013
0.3.6, 2013-05-02
-----------------

A maintenance release.

* Python 3 compatibility
* #31 Fixed `many()` that consumed too many tokens in some cases
* #14 More info available in exception objects
jperkin pushed a commit that referenced this pull request Nov 1, 2013
libass (0.10.2)
 * API additions and some ABI changes, bumped SONAME
 * Expose header field for VSFilter color mangling (GC #87)
 * Add functions for explicit scaling hints (GC #6)
 * Add 'type' field to ASS_Image (GC #31)
 * Workaround Freetype's font size grid-fitting where appropriate
 * Apply blur to both glyph and border when using opaque box
 * Parser bugfixes
   * Parse angles in style as number
   * Fix fallback event formats
   * Make closing ')' optional for some tags
   * Fix crazy VSFilter behaviour for \move (GC #90)
   * Make \r fall back to line style (GC #104)
   * Parse style name like VSFilter
   * Ignore junk in nested \t tags
   * Make \clip tag arguments mandatory
 * Properly handle script and language in the HarfBuzz shaper
 * Allow ASS_Track and ASS_Renderer to have different ASS_Library
 * Fix stroking in some rare cases
 * Correctly handle @font advance (GC #94)
 * Fix ascent/descent for some fonts (GC #106)
 * Fix ass_step_sub to not require sorted events
 * Fix blur scaling
 * Don't mutate input strings (GC #88)
 * Remove/change some error messages
 * Fix various small memory leaks
jperkin pushed a commit that referenced this pull request Dec 9, 2013
pkgsrc: Not switched to cmake, no libaudiofile dependency.

1.1.5:

  * Autotools build resulted in the wrong version number for libfluidsynth.so (reported by plcl, Takashi Iwai)
  * One symbol was dropped from libfluidsynth.so - this symbol was not part of the public API though. (reported by Alessio Treglia)
  * Windows 64 bit: Wrong prototype declaration for MIDI (reported by Graham Goode)
  * JACK: Using jack_free instead of free when needed. Note that this might require a later version of JACK than previously. (reported
    by Graham Goode)
  * Update Free Software Foundation address (reported by ogetbilo)

1.1.4:

  * Several improvements and fixes to the CMake build system, especially for Mac OS X
  * Several bug fixes to the engine, notably quite a few which could cause FluidSynth to sound bad in some cases.
  * API additions, that make it possible to
       * load MIDI files from memory
       * to inspect/modify MIDI events as they are being played from a MIDI file
       * to change channels between melodic and drum mode
       * and to silence all notes in one command.
  * Improvements to the CoreAudio driver

1.1.3:

* Compilation with LADSPA enabled was broken in 1.1.2 - fixed (plcl, diwic)
* Multichannel output broken when double precision was used - fixed (plcl, diwic)
* Doxygen settings (plcl)
* Mac OS X build system fixes (plcl, Benjamin Reed, Jean-Franc,ois Mertens)
* Fix build problem with scummvm (Alexander Hansen, Ebrahim Mayat)
* Optimize by not starting unused threads with multicore rendering (diwic)
* Window handle creation/destruction in Windows dll version (Andy Fillebrown)
* Race condition in alsa_seq / alsa_raw drivers caused them not to quit (diwic)

1.1.2:

Big changes:

  * New CMake build system [plcl]
       * Winbuild and Macbuild directories dropped
       * Autotools build system is deprecated, but is still working
  * Rewriting of thread safety [diwic]
       * Two new settings control the thread safety mode. The default is to be backwards compatible.

Smaller changes:

  * Voice overflow settings [diwic]
  * Possible to update polyphony, up to 65536 (and beyond initial setting) [diwic]
  * Possible to update sample rate (jack driver updates sample rate correctly) [diwic]
  * MIDI Bank Select handling fixed [plcl]
  * Source files moved into different subdirectories [diwic]
  * Can use RealTimeKit (on Linux) to get real-time priority [diwic]
  * Shell commands for pitch bend and pitch bend range [monk]
  * PulseAudio driver: specify media role, and allow pulseaudio to adjust latency [diwic]
  * Bug fixes [diwic, plcl, KO Myung hun, Felix Krause, laurent, nshepperd]

1.1.1:
Bug fixes

     * Recommit fix for voice stealing algorithm (David Henningsson)
     * Update deltatime on midi file load, ticket #59 (David Henningsson and Josh Green, reported by Hans Petter Selasky)
     * Build fix on OS X 10.4 (David Fang and Ebrahim Mayat)
     * Fixed most asynchronous assignment/query regressions affecting QSynth (chorus, reverb, polyphony, MIDI CCs and presets) (Josh Green,
       reports and testing by Rui Nuno Capela)
     * Reverted queuing of chorus and reverb assignments which fixes real-time performance issues when changing values (Josh Green)
     * Fixed issue with audio thread changes affecting CoreAudio on OS X (Josh Green, reported by Ebrahim Mayat)
     * Improved SMP safety with CC MIDI controls, polyphony, modulators and synth gain (Josh Green)
     * Fixed crash bugs in fluid_timer functions (Josh Green)
     * Reverted char * -> const char * changes to function prototypes (Josh Green, reported by Rui Nuno Capela)
     * Fixed TCP server build issue where WITHOUT_SERVER was still being set on win32 (Josh Green)
     * Fixed crash when Jack driver was re-created (Josh Green)
     * Fixed unknown macro warning in FluidSynth man page (David Henningsson)

Misc

     * Return queue process is now a thread instead of a timer and more responsive (Josh Green)
     * Added missing dist files in doc/ (Josh Green)
     * Updated README-OSX (Ebrahim Mayat)

1.1.0:
Features and improvements

     * Extensive work on making FluidSynth more thread safe, resulting in better stability.
     * Audio file rendering for MIDI to audio file conversion, faster than realtime (#15).
     * Optional libsndfile support for file rendering in different audio file formats (wav, flac, ogg vorbis, etc) (#30).
     * Audio and MIDI are synchronized for MIDI file playback.
     * Server can be specified for Jack audio and MIDI drivers.
     * Jack audio and MIDI is now synchronized (when same Jack server used).
     * MIDI file playback is now timed correctly, even with large audio buffer sizes.
     * Fixed issue with missing percussion in MIDI files caused by very short notes, using synth.min-note-length setting (#1).
     * Improved support for MIDI tuning standard, including SYSEX support and realtime tuning activation.
     * Multi-core support for utilizing multiple CPUs for synthesis or increasing speed of file rendering.
     * Voices for a note-on event are started synchronously (#46).
     * TCP/IP shell server support for windows (#20).
     * Improved settings output (-o help) (alphabetically sorted and string options listed).
     * Audio driver (-a) and MIDI driver (-m) options now accept "help" and list available options (#41).
     * Added audio.realtime-prio and midi.realtime-prio for controlling realtime scheduling of some audio and MIDI drivers.
     * Default priority levels of audio and MIDI threads set to 60 and 50 respectively.
     * All yes/no string boolean settings converted to integer toggle settings (with backwards compatibility).
     * glib is now a required dependency.
     * Updated README-OSX
     * Added "voice_count" shell command for getting current number of active voices.

New command line options

     * -F, --fast-render=[file]
     * -T, --audio-file-type
     * -O, --audio-file-format
     * -E, --audio-file-endian

New or changed parameters

     * Audio file output settings: audio.file.endian, audio.file.format, audio.file.name, audio.file.type, audio.sample-format
     * Realtime scheduling settings: audio.realtime-prio, midi.realtime-prio
     * Jack settings: audio.jack.server and midi.jack.server
     * Other settings: player.reset-synth, player.timing-source, synth.cpu-cores (experimental), synth.min-note-length

Bug fixes and minor changes

     * Fixed enabling of high priority scheduling in many audio drivers.
     * Fixed bank selection logic
     * Build fixes for mingw and VC++ builds on Windows
     * Fix default values (after MIDI reset) to be more consistent with MIDI spec (#29).
     * Removed VintageDreamsWaves?-v2.sf2 since it wasn't under a free license.
     * Solaris build fix (#52)
     * Implemented fluid_player_set_loop (#33)
     * Fixed scaletune error (#26)
     * Fixed synth reset between songs (#31)
     * Fixed pitch bend error in Windows MIDI driver (#54)
     * Skip remaining track data in MIDI file after EOT (#53)
     * Bug fix in MIDI router where mutex was left locked with MIDI system reset message.
     * Help command now shows list of topics instead of General help.
     * Fixed non-blocking in alsa_raw, alsa_seq and OSS MIDI drivers.
     * Fixed segfault on config file load (#45).
jperkin pushed a commit that referenced this pull request Dec 9, 2013
------------------------------------------------------------------------
r60 | [email protected] | 2012-02-23 18:00:36 +0100 (Thu, 23 Feb 2012) | 57 lines

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

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

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

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

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

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

R=sanjay

------------------------------------------------------------------------
r59 | [email protected] | 2012-02-21 18:02:17 +0100 (Tue, 21 Feb 2012) | 107 lines

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

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

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

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


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

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

R=sanjay

------------------------------------------------------------------------
r58 | [email protected] | 2012-02-11 23:11:22 +0100 (Sat, 11 Feb 2012) | 9 lines

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

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

R=sanjay

------------------------------------------------------------------------
r57 | [email protected] | 2012-01-08 18:55:48 +0100 (Sun, 08 Jan 2012) | 2 lines

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

------------------------------------------------------------------------
r56 | [email protected] | 2012-01-04 14:10:46 +0100 (Wed, 04 Jan 2012) | 19 lines

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

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

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

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

------------------------------------------------------------------------
r55 | [email protected] | 2012-01-04 11:46:39 +0100 (Wed, 04 Jan 2012) | 6 lines

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

R=csilvers,sanjay

------------------------------------------------------------------------
r54 | [email protected] | 2011-12-05 22:27:26 +0100 (Mon, 05 Dec 2011) | 81 lines

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

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

Microbenchmarks (64-bit, opt mode):

Westmere (Intel Core i7):

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

Clovertown (Intel Core 2):

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

Barcelona (AMD Opteron):

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

R=sanjay

------------------------------------------------------------------------
r53 | [email protected] | 2011-11-23 12:14:17 +0100 (Wed, 23 Nov 2011) | 88 lines

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

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

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

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

Clovertown (Core 2):

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

Westmere (Core i7):

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

Barcelona (Opteron):

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

R=sanjay

------------------------------------------------------------------------
r52 | [email protected] | 2011-11-08 15:46:39 +0100 (Tue, 08 Nov 2011) | 5 lines

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

R=sanjay

------------------------------------------------------------------------
r51 | [email protected] | 2011-10-05 14:27:12 +0200 (Wed, 05 Oct 2011) | 5 lines

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

R=csilvers

------------------------------------------------------------------------
r50 | [email protected] | 2011-09-15 21:34:06 +0200 (Thu, 15 Sep 2011) | 4 lines

Release Snappy 1.0.4.

R=sanjay

------------------------------------------------------------------------
r49 | [email protected] | 2011-09-15 11:50:05 +0200 (Thu, 15 Sep 2011) | 5 lines

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

R=csilvers

------------------------------------------------------------------------
r48 | [email protected] | 2011-08-10 20:57:27 +0200 (Wed, 10 Aug 2011) | 5 lines

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

Based on patch by Travis Vitek.

------------------------------------------------------------------------
r47 | [email protected] | 2011-08-10 20:44:16 +0200 (Wed, 10 Aug 2011) | 4 lines

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

Based on patch by Travis Vitek.

------------------------------------------------------------------------
r46 | [email protected] | 2011-08-10 03:22:09 +0200 (Wed, 10 Aug 2011) | 6 lines

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

Originally based on a patch by Patrick Pelletier.

R=sanjay

------------------------------------------------------------------------
r45 | [email protected] | 2011-08-10 03:14:43 +0200 (Wed, 10 Aug 2011) | 8 lines

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

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

R=csilvers

------------------------------------------------------------------------
r44 | [email protected] | 2011-06-28 13:40:25 +0200 (Tue, 28 Jun 2011) | 8 lines

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

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

R=sanjay

------------------------------------------------------------------------
r43 | [email protected] | 2011-06-04 12:19:05 +0200 (Sat, 04 Jun 2011) | 7 lines

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

R=csilvers

Revision created by MOE tool push_codebase.

------------------------------------------------------------------------
r42 | [email protected] | 2011-06-03 22:53:06 +0200 (Fri, 03 Jun 2011) | 50 lines

Speed up decompression by removing a fast-path attempt.

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

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


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

R=jeff

Revision created by MOE tool push_codebase.

------------------------------------------------------------------------
r41 | [email protected] | 2011-06-03 22:47:14 +0200 (Fri, 03 Jun 2011) | 43 lines

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

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

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

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

R=jeff

Revision created by MOE tool push_codebase.

------------------------------------------------------------------------
r40 | [email protected] | 2011-06-03 00:57:41 +0200 (Fri, 03 Jun 2011) | 2 lines

Release Snappy 1.0.3.

------------------------------------------------------------------------
r39 | [email protected] | 2011-06-02 20:06:54 +0200 (Thu, 02 Jun 2011) | 11 lines

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

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

R=jeff

------------------------------------------------------------------------
r38 | [email protected] | 2011-06-02 19:59:40 +0200 (Thu, 02 Jun 2011) | 52 lines

Speed up decompression by caching ip_.

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

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

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

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

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



------------------------------------------------------------------------
r37 | [email protected] | 2011-05-17 10:48:25 +0200 (Tue, 17 May 2011) | 10 lines


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

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


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1906

------------------------------------------------------------------------
r36 | [email protected] | 2011-05-16 10:59:18 +0200 (Mon, 16 May 2011) | 12 lines


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

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


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1867

------------------------------------------------------------------------
r35 | [email protected] | 2011-05-09 23:29:02 +0200 (Mon, 09 May 2011) | 12 lines


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

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


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1799

------------------------------------------------------------------------
r34 | [email protected] | 2011-05-09 23:28:45 +0200 (Mon, 09 May 2011) | 19 lines


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

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

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


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1798

------------------------------------------------------------------------
r33 | [email protected] | 2011-05-04 01:22:52 +0200 (Wed, 04 May 2011) | 11 lines


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

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


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1710

------------------------------------------------------------------------
r32 | [email protected] | 2011-05-04 01:22:33 +0200 (Wed, 04 May 2011) | 11 lines


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

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


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1709

------------------------------------------------------------------------
r31 | [email protected] | 2011-04-26 14:34:55 +0200 (Tue, 26 Apr 2011) | 15 lines


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

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


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1556

------------------------------------------------------------------------
r30 | [email protected] | 2011-04-26 14:34:37 +0200 (Tue, 26 Apr 2011) | 11 lines


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

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


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1555

------------------------------------------------------------------------
r29 | [email protected] | 2011-04-16 00:55:56 +0200 (Sat, 16 Apr 2011) | 12 lines


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

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


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1485

------------------------------------------------------------------------
r28 | [email protected] | 2011-04-11 11:07:01 +0200 (Mon, 11 Apr 2011) | 15 lines


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

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

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


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1295

------------------------------------------------------------------------
r27 | [email protected] | 2011-04-08 11:51:53 +0200 (Fri, 08 Apr 2011) | 22 lines


Include C bindings of Snappy, contributed by Martin Gieseking.

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

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

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

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


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1294

------------------------------------------------------------------------
r26 | [email protected] | 2011-04-07 18:36:43 +0200 (Thu, 07 Apr 2011) | 13 lines


Replace geo.protodata with a newer version.

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

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


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1288

------------------------------------------------------------------------
r25 | [email protected] | 2011-03-30 22:27:53 +0200 (Wed, 30 Mar 2011) | 12 lines


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

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


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1152

------------------------------------------------------------------------
r24 | [email protected] | 2011-03-30 22:27:39 +0200 (Wed, 30 Mar 2011) | 13 lines


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

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


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1151

------------------------------------------------------------------------
r23 | [email protected] | 2011-03-30 22:25:09 +0200 (Wed, 30 Mar 2011) | 18 lines


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

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

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


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1150

------------------------------------------------------------------------
r22 | [email protected] | 2011-03-29 00:17:04 +0200 (Tue, 29 Mar 2011) | 11 lines


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

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


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1094

------------------------------------------------------------------------
r21 | [email protected] | 2011-03-26 03:34:34 +0100 (Sat, 26 Mar 2011) | 20 lines


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

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

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

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

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



Revision created by MOE tool push_codebase.
MOE_MIGRATION=1072

------------------------------------------------------------------------
r20 | [email protected] | 2011-03-25 17:14:41 +0100 (Fri, 25 Mar 2011) | 10 lines


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

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


Revision created by MOE tool push_codebase.
MOE_MIGRATION=1061
jperkin pushed a commit that referenced this pull request Dec 9, 2013
== 1.7.2 / 2012-04-03

Bug Fixes
- Fixed segmentation fault on exit [issue #30]
- Fixed syswrite warning when IO contains unflushed data in buffer [issue #31]
- Added "mingw" to the list of Windows host versions

== 1.7.1 / 2012-03-05

Bug Fixes
- Fixed deprecated use of Config::* [issue #29]

== 1.7.0 / 2012-02-18

Enhancements
- Move appender factories [issue #28]
- ActionMail compatible options in the email appender [issue #27]
- Add TLS support to the email appender [issue #25]
- Refactoring appender shutdown [issue #20]
Bug Fixes
- File locking fails on windows using JRuby [issue #22]

== 1.6.2 / 2012-01-05

Bug Fixes
- Fix typo in the Readme [issue #14]
- Fix spelling in a variety of places [issue #15]
- Solaris does not have Syslog#LOG_PERROR defined [issue #17]
- Fix failing tests for Ruby 1.9.3 [issue #18]
- Check for RUBY_ENGINE for Ruby 1.8.7 [issue #19]
- Whitespace and '# EOF' cleanup
- Support for Rubinious

== 1.6.1 / 2011-09-09

Bug Fixes
- Rails compatibility methods [issue #11]
- Blocked rolling file appender [issue #12]

== 1.6.0 / 2011-08-22

Enhancements
- Adding periodic flushing of buffered messages [issue #10]
- Accessor for a logger's appenders [issue #9]
- Better support for capturing log messages in RSpec version 1 & 2

== 1.5.2 / 2011-07-07

Bug Fixes
- Changing working directory breaks rolling file appenders [issue #8]

== 1.5.1 / 2011-06-03

Bug Fixes
- IO streams cannot be buffered when using syswrite
- JRuby does not allow shared locks on write only file descriptors
- Fixing tests for JRuby 1.6.X

== 1.5.0 / 2011-03-22

Minor Enhancements
- removed mutexes in favor of IO#syswrite
- no round tripping through the buffer array when auto_flushing is true
- added a Proxy object that will log all methods called on it
- colorization of log messages
jperkin pushed a commit that referenced this pull request Dec 9, 2013
=== 2.8 / 2012-10-17

* Minor enhancements
  * Added Net::HTTP::Persistent::detect_idle_timeout which can be used to
    determine the idle timeout for a host.
  * The read timeout may now be updated for every request.  Issue #33 by
    Mislav Marohnić
  * Added NO_PROXY support.  Pull Request #31 by Laurence Rowe.
  * Added #cert and #key aliases for Net::HTTP compatibility.  Pull request
    #26 by dlee.
  * The artifice gem now disables SSL session reuse to prevent breakage of
    testing frameworks.  Pull Request #29 by Christopher Cooke.
  * Disabled Net::HTTP::Persistent::SSLReuse on Ruby 2+.  This feature is now
    built-in to Net::HTTP.
* Bug fixes
  * Socket options are set again following connection reset.  Pull request #28
    by cmaion.
  * #shutdown now works even if no connections were made.  Pull Request #24 by
    James Tucker.
  * Updated test RSA key size to 1024 bits.  Bug #25 by Gunnar Wolf.
  * The correct host:port are shown in the exception when a proxy connection
    fails.  Bug #30 by glebtv.
jperkin pushed a commit that referenced this pull request Dec 9, 2013
* Sat Dec 22 2012 Ding-Yi Chen <dchen at redhat.com> - 1.4.3
- Fixed GitHub issue #30: Rework decorate_preedit
  by merging pull request #30 from buganini
- Fixed GitHub issue #31: Properly refresh property
  by merging pull request #31 from buganini
jperkin pushed a commit that referenced this pull request Dec 9, 2013
------
0.6.43
------

* Issue #378: Restore support for Python 2.4 Syntax (regression in 0.6.42).

------
0.6.42
------

* External links finder no longer yields duplicate links.
* Issue #337: Moved site.py to setuptools/site-patch.py (graft of very old
  patch from setuptools trunk which inspired PR #31).

------
0.6.41
------

* Issue #27: Use public api for loading resources from zip files rather than
  the private method `_zip_directory_cache`.
* Added a new function ``easy_install.get_win_launcher`` which may be used by
  third-party libraries such as buildout to get a suitable script launcher.
jperkin pushed a commit that referenced this pull request Dec 9, 2013
0.3.6, 2013-05-02
-----------------

A maintenance release.

* Python 3 compatibility
* #31 Fixed `many()` that consumed too many tokens in some cases
* #14 More info available in exception objects
jperkin pushed a commit that referenced this pull request Dec 9, 2013
libass (0.10.2)
 * API additions and some ABI changes, bumped SONAME
 * Expose header field for VSFilter color mangling (GC #87)
 * Add functions for explicit scaling hints (GC #6)
 * Add 'type' field to ASS_Image (GC #31)
 * Workaround Freetype's font size grid-fitting where appropriate
 * Apply blur to both glyph and border when using opaque box
 * Parser bugfixes
   * Parse angles in style as number
   * Fix fallback event formats
   * Make closing ')' optional for some tags
   * Fix crazy VSFilter behaviour for \move (GC #90)
   * Make \r fall back to line style (GC #104)
   * Parse style name like VSFilter
   * Ignore junk in nested \t tags
   * Make \clip tag arguments mandatory
 * Properly handle script and language in the HarfBuzz shaper
 * Allow ASS_Track and ASS_Renderer to have different ASS_Library
 * Fix stroking in some rare cases
 * Correctly handle @font advance (GC #94)
 * Fix ascent/descent for some fonts (GC #106)
 * Fix ass_step_sub to not require sorted events
 * Fix blur scaling
 * Don't mutate input strings (GC #88)
 * Remove/change some error messages
 * Fix various small memory leaks
jperkin pushed a commit that referenced this pull request Jan 21, 2014
------
0.6.43
------

* Issue #378: Restore support for Python 2.4 Syntax (regression in 0.6.42).

------
0.6.42
------

* External links finder no longer yields duplicate links.
* Issue #337: Moved site.py to setuptools/site-patch.py (graft of very old
  patch from setuptools trunk which inspired PR #31).

------
0.6.41
------

* Issue #27: Use public api for loading resources from zip files rather than
  the private method `_zip_directory_cache`.
* Added a new function ``easy_install.get_win_launcher`` which may be used by
  third-party libraries such as buildout to get a suitable script launcher.
jperkin pushed a commit that referenced this pull request Jan 21, 2014
0.3.6, 2013-05-02
-----------------

A maintenance release.

* Python 3 compatibility
* #31 Fixed `many()` that consumed too many tokens in some cases
* #14 More info available in exception objects
jperkin pushed a commit that referenced this pull request Jan 21, 2014
libass (0.10.2)
 * API additions and some ABI changes, bumped SONAME
 * Expose header field for VSFilter color mangling (GC #87)
 * Add functions for explicit scaling hints (GC #6)
 * Add 'type' field to ASS_Image (GC #31)
 * Workaround Freetype's font size grid-fitting where appropriate
 * Apply blur to both glyph and border when using opaque box
 * Parser bugfixes
   * Parse angles in style as number
   * Fix fallback event formats
   * Make closing ')' optional for some tags
   * Fix crazy VSFilter behaviour for \move (GC #90)
   * Make \r fall back to line style (GC #104)
   * Parse style name like VSFilter
   * Ignore junk in nested \t tags
   * Make \clip tag arguments mandatory
 * Properly handle script and language in the HarfBuzz shaper
 * Allow ASS_Track and ASS_Renderer to have different ASS_Library
 * Fix stroking in some rare cases
 * Correctly handle @font advance (GC #94)
 * Fix ascent/descent for some fonts (GC #106)
 * Fix ass_step_sub to not require sorted events
 * Fix blur scaling
 * Don't mutate input strings (GC #88)
 * Remove/change some error messages
 * Fix various small memory leaks
jperkin pushed a commit that referenced this pull request Jan 21, 2014
=== 2.0.0 / 2013-12-21

- Drop Ruby 1.8 compatibility
- GH #21: Fix FilePart length calculation for Ruby 1.9 when filename contains
  multibyte characters (hexfet)
- GH #20: Ensure upload responds to both #content_type and #original_filename
  (Steven Davidovitz)
- GH #31: Support setting headers on any part of the request (Socrates Vicente)
- GH #30: Support array values for params (Gustav Ernberg)
- GH #32: Fix respond_to? signature (Leo Cassarani)
- GH #33: Update README to markdown (Jagtesh Chadha)
- GH #35: Improved handling of array-type parameters (Steffen Grunwald)
jperkin pushed a commit that referenced this pull request Feb 6, 2014
distfile. From Changelog:

1.4.2
=====

- Heartbeat negotiation would use heartbeat value from server even
  if heartbeat disabled (Issue #31).

1.4.1
=====

- Fixed error occurring when heartbeats disabled.

1.4.0
=====

- Heartbeat implementation improved (Issue #6).

    The new heartbeat behavior is the same approach as taken by the
    RabbitMQ java library.

    This also means that clients should preferably call the ``heartbeat_tick``
    method more frequently (like every second) instead of using the old
    ``rate`` argument (which is now ignored).

    - Heartbeat interval is negotiated with the server.
    - Some delay is allowed if the heartbeat is late.
    - Monotonic time is used to keep track of the heartbeat
      instead of relying on the caller to call the checking function
      at the right time.
- NoneType is now supported in tables and arrays.
- SSLTransport: Now handles ``ENOENT``.
jperkin pushed a commit that referenced this pull request Mar 14, 2014
=== 2.8 / 2012-10-17

* Minor enhancements
  * Added Net::HTTP::Persistent::detect_idle_timeout which can be used to
    determine the idle timeout for a host.
  * The read timeout may now be updated for every request.  Issue #33 by
    Mislav Marohnić
  * Added NO_PROXY support.  Pull Request #31 by Laurence Rowe.
  * Added #cert and #key aliases for Net::HTTP compatibility.  Pull request
    #26 by dlee.
  * The artifice gem now disables SSL session reuse to prevent breakage of
    testing frameworks.  Pull Request #29 by Christopher Cooke.
  * Disabled Net::HTTP::Persistent::SSLReuse on Ruby 2+.  This feature is now
    built-in to Net::HTTP.
* Bug fixes
  * Socket options are set again following connection reset.  Pull request #28
    by cmaion.
  * #shutdown now works even if no connections were made.  Pull Request #24 by
    James Tucker.
  * Updated test RSA key size to 1024 bits.  Bug #25 by Gunnar Wolf.
  * The correct host:port are shown in the exception when a proxy connection
    fails.  Bug #30 by glebtv.
jperkin pushed a commit that referenced this pull request Mar 14, 2014
* Sat Dec 22 2012 Ding-Yi Chen <dchen at redhat.com> - 1.4.3
- Fixed GitHub issue #30: Rework decorate_preedit
  by merging pull request #30 from buganini
- Fixed GitHub issue #31: Properly refresh property
  by merging pull request #31 from buganini
jperkin pushed a commit that referenced this pull request Mar 14, 2014
------
0.6.43
------

* Issue #378: Restore support for Python 2.4 Syntax (regression in 0.6.42).

------
0.6.42
------

* External links finder no longer yields duplicate links.
* Issue #337: Moved site.py to setuptools/site-patch.py (graft of very old
  patch from setuptools trunk which inspired PR #31).

------
0.6.41
------

* Issue #27: Use public api for loading resources from zip files rather than
  the private method `_zip_directory_cache`.
* Added a new function ``easy_install.get_win_launcher`` which may be used by
  third-party libraries such as buildout to get a suitable script launcher.
jperkin pushed a commit that referenced this pull request Mar 14, 2014
0.3.6, 2013-05-02
-----------------

A maintenance release.

* Python 3 compatibility
* #31 Fixed `many()` that consumed too many tokens in some cases
* #14 More info available in exception objects
jperkin pushed a commit that referenced this pull request Mar 14, 2014
libass (0.10.2)
 * API additions and some ABI changes, bumped SONAME
 * Expose header field for VSFilter color mangling (GC #87)
 * Add functions for explicit scaling hints (GC #6)
 * Add 'type' field to ASS_Image (GC #31)
 * Workaround Freetype's font size grid-fitting where appropriate
 * Apply blur to both glyph and border when using opaque box
 * Parser bugfixes
   * Parse angles in style as number
   * Fix fallback event formats
   * Make closing ')' optional for some tags
   * Fix crazy VSFilter behaviour for \move (GC #90)
   * Make \r fall back to line style (GC #104)
   * Parse style name like VSFilter
   * Ignore junk in nested \t tags
   * Make \clip tag arguments mandatory
 * Properly handle script and language in the HarfBuzz shaper
 * Allow ASS_Track and ASS_Renderer to have different ASS_Library
 * Fix stroking in some rare cases
 * Correctly handle @font advance (GC #94)
 * Fix ascent/descent for some fonts (GC #106)
 * Fix ass_step_sub to not require sorted events
 * Fix blur scaling
 * Don't mutate input strings (GC #88)
 * Remove/change some error messages
 * Fix various small memory leaks
jperkin pushed a commit that referenced this pull request Mar 14, 2014
=== 2.0.0 / 2013-12-21

- Drop Ruby 1.8 compatibility
- GH #21: Fix FilePart length calculation for Ruby 1.9 when filename contains
  multibyte characters (hexfet)
- GH #20: Ensure upload responds to both #content_type and #original_filename
  (Steven Davidovitz)
- GH #31: Support setting headers on any part of the request (Socrates Vicente)
- GH #30: Support array values for params (Gustav Ernberg)
- GH #32: Fix respond_to? signature (Leo Cassarani)
- GH #33: Update README to markdown (Jagtesh Chadha)
- GH #35: Improved handling of array-type parameters (Steffen Grunwald)
jperkin pushed a commit that referenced this pull request Mar 14, 2014
distfile. From Changelog:

1.4.2
=====

- Heartbeat negotiation would use heartbeat value from server even
  if heartbeat disabled (Issue #31).

1.4.1
=====

- Fixed error occurring when heartbeats disabled.

1.4.0
=====

- Heartbeat implementation improved (Issue #6).

    The new heartbeat behavior is the same approach as taken by the
    RabbitMQ java library.

    This also means that clients should preferably call the ``heartbeat_tick``
    method more frequently (like every second) instead of using the old
    ``rate`` argument (which is now ignored).

    - Heartbeat interval is negotiated with the server.
    - Some delay is allowed if the heartbeat is late.
    - Monotonic time is used to keep track of the heartbeat
      instead of relying on the caller to call the checking function
      at the right time.
- NoneType is now supported in tables and arrays.
- SSLTransport: Now handles ``ENOENT``.
jperkin pushed a commit that referenced this pull request Apr 1, 2014
---
3.7
---

* Gnome keyring no longer relies on the GNOME_KEYRING_CONTROL environment
  variable.
* Issue #140: Restore compatibility for older versions of PyWin32.

---
3.6
---

* `Pull Request #1 (github) <https://github.com/jaraco/keyring/pull/1>`_:
  Add support for packages that wish to bundle keyring by using relative
  imports throughout.

---
3.5
---

* Issue #49: Give the backend priorities a 1.5 multiplier bump when an
  XDG_CURRENT_DESKTOP environment variable matches the keyring's target
  environment.
* Issue #99: Clarified documentation on location of config and data files.
  Prepared the code base to treat the two differently on Unix-based systems.
  For now, the behavior is unchanged.

---
3.4
---

* Extracted FileBacked and Encrypted base classes.
* Add a pyinstaller hook to expose backend modules. Ref #124
* Pull request #41: Use errno module instead of hardcoding error codes.
* SecretService backend: correctly handle cases when user dismissed
  the collection creation or unlock prompt.

---
3.3
---

* Pull request #40: KWallet backend will now honor the ``KDE_FULL_SESSION``
  environment variable as found on openSUSE.

-----
3.2.1
-----

* SecretService backend: use a different function to check that the
  backend is functional. The default collection may not exist, but
  the collection will remain usable in that case.

  Also, make the error message more verbose.

  Resolves https://bugs.launchpad.net/bugs/1242412.

---
3.2
---

* Issue #120: Invoke KeyringBackend.priority during load_keyring to ensure
  that any keyring loaded is actually viable (or raises an informative
  exception).

* File keyring:

   - Issue #123: fix removing items.
   - Correctly escape item name when removing.
   - Use with statement when working with files.

* Add a test for removing one item in group.

* Issue #81: Added experimental support for third-party backends. See
  `keyring.core._load_library_extensions` for information on supplying
  a third-party backend.

---
3.1
---

* All code now runs natively on both Python 2 and Python 3, no 2to3 conversion
  is required.
* Testsuite: clean up, and make more use of unittest2 methods.

-----
3.0.5
-----

* Issue #114: Fix logic in pyfs detection.

-----
3.0.4
-----

* Issue #114: Fix detection of pyfs under Mercurial Demand Import.

-----
3.0.3
-----

* Simplified the implementation of ``keyring.core.load_keyring``. It now uses
  ``__import__`` instead of loading modules explicitly. The ``keyring_path``
  parameter to ``load_keyring`` is now deprecated. Callers should instead
  ensure their module is available on ``sys.path`` before calling
  ``load_keyring``. Keyring still honors ``keyring-path``. This change fixes
  Issue #113 in which the explicit module loading of keyring modules was
  breaking package-relative imports.

-----
3.0.2
-----

* Renamed ``keyring.util.platform`` to ``keyring.util.platform_``. As reported
  in Issue #112 and `mercurial_keyring #31
  <https://bitbucket.org/Mekk/mercurial_keyring/issue/31>`_ and in `Mercurial
  itself <http://bz.selenic.com/show_bug.cgi?id=4029>`_, Mercurial's Demand
  Import does not honor ``absolute_import`` directives, so it's not possible
  to have a module with the same name as another top-level module. A patch is
  in place to fix this issue upstream, but to support older Mercurial
  versions, this patch will remain for some time.

-----
3.0.1
-----

* Ensure that modules are actually imported even in Mercurial's Demand Import
  environment.

---
3.0
---

* Removed support for Python 2.5.
* Removed names in ``keyring.backend`` moved in 1.1 and previously retained
  for compatibilty.

-----
2.1.1
-----

* Restored Python 2.5 compatibility (lost in 2.0).

---
2.1
---

*  Issue #10: Added a 'store' attribute to the OS X Keyring, enabling custom
   instances of the KeyringBackend to use another store, such as the
   'internet' store. For example::

       keys = keyring.backends.OS_X.Keyring()
       keys.store = 'internet'
       keys.set_password(system, user, password)
       keys.get_password(system, user)

   The default for all instances can be set in the class::

       keyring.backends.OS_X.Keyring.store = 'internet'

*  GnomeKeyring: fix availability checks, and make sure the warning
   message from pygobject is not printed.

*  Fixes to GnomeKeyring and SecretService tests.

-----
2.0.3
-----

*  Issue #112: Backend viability/priority checks now are more aggressive about
   module presence checking, requesting ``__name__`` from imported modules to
   force the demand importer to actually attempt the import.

-----
2.0.2
-----

*  Issue #111: Windows backend isn't viable on non-Windows platforms.

-----
2.0.1
-----

*  Issue #110: Fix issues with ``Windows.RegistryKeyring``.

---
2.0
---

*  Issue #80: Prioritized backend support. The primary interface for Keyring
   backend classes has been refactored to now emit a 'priority' based on the
   current environment (operating system, libraries available, etc). These
   priorities provide an indication of the applicability of that backend for
   the current environment. Users are still welcome to specify a particular
   backend in configuration, but the default behavior should now be to select
   the most appropriate backend by default.

-----
1.6.1
-----

* Only include pytest-runner in 'setup requirements' when ptr invocation is
  indicated in the command-line (Issue #105).

---
1.6
---

*  GNOME Keyring backend:

   - Use the same attributes (``username`` / ``service``) as the SecretService
     backend uses, allow searching for old ones for compatibility.
   - Also set ``application`` attribute.
   - Correctly handle all types of errors, not only ``CANCELLED`` and ``NO_MATCH``.
   - Avoid printing warnings to stderr when GnomeKeyring is not available.

* Secret Service backend:

   - Use a better label for passwords, the same as GNOME Keyring backend uses.

---
1.5
---

*  SecretService: allow deleting items created using previous python-keyring
   versions.

   Before the switch to secretstorage, python-keyring didn't set "application"
   attribute. Now in addition to supporting searching for items without that
   attribute, python-keyring also supports deleting them.

*  Use ``secretstorage.get_default_collection`` if it's available.

   On secretstorage 1.0 or later, python-keyring now tries to create the
   default collection if it doesn't exist, instead of just raising the error.

*  Improvements for tests, including fix for Issue #102.

---
1.4
---

* Switch GnomeKeyring backend to use native libgnome-keyring via
  GObject Introspection, not the obsolete python-gnomekeyring module.

---
1.3
---

* Use the `SecretStorage library <https://pypi.python.org/pypi/SecretStorage>`_
  to implement the Secret Service backend (instead of using dbus directly).
  Now the keyring supports prompting for and deleting passwords. Fixes #69,
  #77, and #93.
* Catch `gnomekeyring.IOError` per the issue `reported in Nova client
  <https://bugs.launchpad.net/python-novaclient/+bug/1116302>`_.
* Issue #92 Added support for delete_password on Mac OS X Keychain.

-----
1.2.3
-----

* Fix for Encrypted File backend on Python 3.
* Issue #97 Improved support for PyPy.

-----
1.2.2
-----

* Fixed handling situations when user cancels kwallet dialog or denies access
  for the app.

-----
1.2.1
-----

* Fix for kwallet delete.
* Fix for OS X backend on Python 3.
* Issue #84: Fix for Google backend on Python 3 (use of raw_input not caught
  by 2to3).

---
1.2
---

* Implemented delete_password on most keyrings. Keyring 2.0 will require
  delete_password to implement a Keyring. Fixes #79.

-----
1.1.2
-----

* Issue #78: pyfilesystem backend now works on Windows.

-----
1.1.1
-----

* Fixed MANIFEST.in so .rst files are included.

---
1.1
---

This is the last build that will support installation in a pure-distutils
mode. Subsequent releases will require setuptools/distribute to install.
Python 3 installs have always had this requirement (for 2to3 install support),
but starting with the next minor release (1.2+), setuptools will be required.

Additionally, this release has made some substantial refactoring in an
attempt to modularize the backends. An attempt has been made to maintain 100%
backward-compatibility, although if your library does anything fancy with
module structure or clasess, some tweaking may be necessary. The
backward-compatible references will be removed in 2.0, so the 1.1+ releases
represent a transitional implementation which should work with both legacy
and updated module structure.

* Added a console-script 'keyring' invoking the command-line interface.
* Deprecated _ExtensionKeyring.
* Moved PasswordSetError and InitError to an `errors` module (references kept
  for backward-compatibility).
* Moved concrete backend implementations into their own modules (references
  kept for backward compatibility):

  - OSXKeychain -> backends.OS_X.Keyring
  - GnomeKeyring -> backends.Gnome.Keyring
  - SecretServiceKeyring -> backends.SecretService.Keyring
  - KDEKWallet -> backends.kwallet.Keyring
  - BasicFileKeyring -> backends.file.BaseKeyring
  - CryptedFileKeyring -> backends.file.EncryptedKeyring
  - UncryptedFileKeyring -> backends.file.PlaintextKeyring
  - Win32CryptoKeyring -> backends.Windows.EncryptedKeyring
  - WinVaultKeyring -> backends.Windows.WinVaultKeyring
  - Win32CryptoRegistry -> backends.Windows.RegistryKeyring
  - select_windows_backend -> backends.Windows.select_windows_backend
  - GoogleDocsKeyring -> backends.Google.DocsKeyring
  - Credential -> keyring.credentials.Credential
  - BaseCredential -> keyring.credentials.SimpleCredential
  - EnvironCredential -> keyring.credentials.EnvironCredential
  - GoogleEnvironCredential -> backends.Google.EnvironCredential
  - BaseKeyczarCrypter -> backends.keyczar.BaseCrypter
  - KeyczarCrypter -> backends.keyczar.Crypter
  - EnvironKeyczarCrypter -> backends.keyczar.EnvironCrypter
  - EnvironGoogleDocsKeyring -> backends.Google.KeyczarDocsKeyring
  - BasicPyfilesystemKeyring -> backends.pyfs.BasicKeyring
  - UnencryptedPyfilesystemKeyring -> backends.pyfs.PlaintextKeyring
  - EncryptedPyfilesystemKeyring -> backends.pyfs.EncryptedKeyring
  - EnvironEncryptedPyfilesystemKeyring -> backends.pyfs.KeyczarKeyring
  - MultipartKeyringWrapper -> backends.multi.MultipartKeyringWrapper

* Officially require Python 2.5 or greater (although unofficially, this
  requirement has been in place since 0.10).

---
1.0
---

This backward-incompatible release attempts to remove some cruft from the
codebase that's accumulated over the versions.

* Removed legacy file relocation support. `keyring` no longer supports loading
  configuration or file-based backends from ~. If upgrading from 0.8 or later,
  the files should already have been migrated to their new proper locations.
  If upgrading from 0.7.x or earlier, the files will have to be migrated
  manually.
* Removed CryptedFileKeyring migration support. To maintain an existing
  CryptedFileKeyring, one must first upgrade to 0.9.2 or later and access the
  keyring before upgrading to 1.0 to retain the existing keyring.
* File System backends now create files without group and world permissions.
  Fixes #67.

------
0.10.1
------

* Merged 0.9.3 to include fix for #75.

----
0.10
----

* Add support for using `Keyczar <http://www.keyczar.org/>`_ to encrypt
  keyrings. Keyczar is "an open source cryptographic toolkit designed to make
  it easier and safer for developers to use cryptography in their
  applications."
* Added support for storing keyrings on Google Docs or any other filesystem
  supported by pyfilesystem.
* Fixed issue in Gnome Keyring when unicode is passed as the service name,
  username, or password.
* Tweaked SecretService code to pass unicode to DBus, as unicode is the
  preferred format.
* Issue #71 - Fixed logic in CryptedFileKeyring.
* Unencrypted keyring file will be saved with user read/write (and not group
  or world read/write).

-----
0.9.3
-----

* Ensure migration is run when get_password is called. Fixes #75. Thanks to
  Marc Deslauriers for reporting the bug and supplying the patch.

-----
0.9.2
-----

* Keyring 0.9.1 introduced a whole different storage format for the
  CryptedFileKeyring, but this introduced some potential compatibility issues.
  This release incorporates the security updates but reverts to the INI file
  format for storage, only encrypting the passwords and leaving the service
  and usernames in plaintext. Subsequent releases may incorporate a new
  keyring to implement a whole-file encrypted version. Fixes #64.
* The CryptedFileKeyring now requires simplejson for Python 2.5 clients.

-----
0.9.1
-----

* Fix for issue where SecretServiceBackend.set_password would raise a
  UnicodeError on Python 3 or when a unicode password was provided on Python
  2.
* CryptedFileKeyring now uses PBKDF2 to derive the key from the user's
  password and a random hash. The IV is chosen randomly as well. All the
  stored passwords are encrypted at once. Any keyrings using the old format
  will be automatically converted to the new format (but will no longer be
  compatible with 0.9 and earlier). The user's password is no longer limited
  to 32 characters. PyCrypto 2.5 or greater is now required for this keyring.

---
0.9
---

* Add support for GTK 3 and secret service D-Bus. Fixes #52.
* Issue #60 - Use correct method for decoding.

-----
0.8.1
-----

* Fix regression in keyring lib on Windows XP where the LOCALAPPDATA
  environment variable is not present.

---
0.8
---

* Mac OS X keyring backend now uses subprocess calls to the `security`
  command instead of calling the API, which with the latest updates, no
  longer allows Python to invoke from a virtualenv. Fixes issue #13.
* When using file-based storage, the keyring files are no longer stored
  in the user's home directory, but are instead stored in platform-friendly
  locations (`%localappdata%\Python Keyring` on Windows and according to
  the freedesktop.org Base Dir Specification
  (`$XDG_DATA_HOME/python_keyring` or `$HOME/.local/share/python_keyring`)
  on other operating systems). This fixes #21.

*Backward Compatibility Notice*

Due to the new storage location for file-based keyrings, keyring 0.8
supports backward compatibility by automatically moving the password
files to the updated location. In general, users can upgrade to 0.8 and
continue to operate normally. Any applications that customize the storage
location or make assumptions about the storage location will need to take
this change into consideration. Additionally, after upgrading to 0.8,
it is not possible to downgrade to 0.7 without manually moving
configuration files. In 1.0, the backward compatibilty
will be removed.

-----
0.7.1
-----

* Removed non-ASCII characters from README and CHANGES docs (required by
  distutils if we're to include them in the long_description). Fixes #55.

---
0.7
---

* Python 3 is now supported. All tests now pass under Python 3.2 on
  Windows and Linux (although Linux backend support is limited). Fixes #28.
* Extension modules on Mac and Windows replaced by pure-Python ctypes
  implementations. Thanks to Jerome Laheurte.
* WinVaultKeyring now supports multiple passwords for the same service. Fixes
  #47.
* Most of the tests don't require user interaction anymore.
* Entries stored in Gnome Keyring appears now with a meaningful name if you try
  to browser your keyring (for ex. with Seahorse)
* Tests from Gnome Keyring no longer pollute the user own keyring.
* `keyring.util.escape` now accepts only unicode strings. Don't try to encode
  strings passed to it.

-----
0.6.2
-----

* fix compiling on OSX with XCode 4.0

-----
0.6.1
-----

* Gnome keyring should not be used if there is no DISPLAY or if the dbus is
  not around (https://bugs.launchpad.net/launchpadlib/+bug/752282).

---
0.6
---

* Added `keyring.http` for facilitating HTTP Auth using keyring.

* Add a utility to access the keyring from the command line.
jperkin pushed a commit that referenced this pull request Apr 15, 2014
---
3.7
---

* Gnome keyring no longer relies on the GNOME_KEYRING_CONTROL environment
  variable.
* Issue #140: Restore compatibility for older versions of PyWin32.

---
3.6
---

* `Pull Request #1 (github) <https://github.com/jaraco/keyring/pull/1>`_:
  Add support for packages that wish to bundle keyring by using relative
  imports throughout.

---
3.5
---

* Issue #49: Give the backend priorities a 1.5 multiplier bump when an
  XDG_CURRENT_DESKTOP environment variable matches the keyring's target
  environment.
* Issue #99: Clarified documentation on location of config and data files.
  Prepared the code base to treat the two differently on Unix-based systems.
  For now, the behavior is unchanged.

---
3.4
---

* Extracted FileBacked and Encrypted base classes.
* Add a pyinstaller hook to expose backend modules. Ref #124
* Pull request #41: Use errno module instead of hardcoding error codes.
* SecretService backend: correctly handle cases when user dismissed
  the collection creation or unlock prompt.

---
3.3
---

* Pull request #40: KWallet backend will now honor the ``KDE_FULL_SESSION``
  environment variable as found on openSUSE.

-----
3.2.1
-----

* SecretService backend: use a different function to check that the
  backend is functional. The default collection may not exist, but
  the collection will remain usable in that case.

  Also, make the error message more verbose.

  Resolves https://bugs.launchpad.net/bugs/1242412.

---
3.2
---

* Issue #120: Invoke KeyringBackend.priority during load_keyring to ensure
  that any keyring loaded is actually viable (or raises an informative
  exception).

* File keyring:

   - Issue #123: fix removing items.
   - Correctly escape item name when removing.
   - Use with statement when working with files.

* Add a test for removing one item in group.

* Issue #81: Added experimental support for third-party backends. See
  `keyring.core._load_library_extensions` for information on supplying
  a third-party backend.

---
3.1
---

* All code now runs natively on both Python 2 and Python 3, no 2to3 conversion
  is required.
* Testsuite: clean up, and make more use of unittest2 methods.

-----
3.0.5
-----

* Issue #114: Fix logic in pyfs detection.

-----
3.0.4
-----

* Issue #114: Fix detection of pyfs under Mercurial Demand Import.

-----
3.0.3
-----

* Simplified the implementation of ``keyring.core.load_keyring``. It now uses
  ``__import__`` instead of loading modules explicitly. The ``keyring_path``
  parameter to ``load_keyring`` is now deprecated. Callers should instead
  ensure their module is available on ``sys.path`` before calling
  ``load_keyring``. Keyring still honors ``keyring-path``. This change fixes
  Issue #113 in which the explicit module loading of keyring modules was
  breaking package-relative imports.

-----
3.0.2
-----

* Renamed ``keyring.util.platform`` to ``keyring.util.platform_``. As reported
  in Issue #112 and `mercurial_keyring #31
  <https://bitbucket.org/Mekk/mercurial_keyring/issue/31>`_ and in `Mercurial
  itself <http://bz.selenic.com/show_bug.cgi?id=4029>`_, Mercurial's Demand
  Import does not honor ``absolute_import`` directives, so it's not possible
  to have a module with the same name as another top-level module. A patch is
  in place to fix this issue upstream, but to support older Mercurial
  versions, this patch will remain for some time.

-----
3.0.1
-----

* Ensure that modules are actually imported even in Mercurial's Demand Import
  environment.

---
3.0
---

* Removed support for Python 2.5.
* Removed names in ``keyring.backend`` moved in 1.1 and previously retained
  for compatibilty.

-----
2.1.1
-----

* Restored Python 2.5 compatibility (lost in 2.0).

---
2.1
---

*  Issue #10: Added a 'store' attribute to the OS X Keyring, enabling custom
   instances of the KeyringBackend to use another store, such as the
   'internet' store. For example::

       keys = keyring.backends.OS_X.Keyring()
       keys.store = 'internet'
       keys.set_password(system, user, password)
       keys.get_password(system, user)

   The default for all instances can be set in the class::

       keyring.backends.OS_X.Keyring.store = 'internet'

*  GnomeKeyring: fix availability checks, and make sure the warning
   message from pygobject is not printed.

*  Fixes to GnomeKeyring and SecretService tests.

-----
2.0.3
-----

*  Issue #112: Backend viability/priority checks now are more aggressive about
   module presence checking, requesting ``__name__`` from imported modules to
   force the demand importer to actually attempt the import.

-----
2.0.2
-----

*  Issue #111: Windows backend isn't viable on non-Windows platforms.

-----
2.0.1
-----

*  Issue #110: Fix issues with ``Windows.RegistryKeyring``.

---
2.0
---

*  Issue #80: Prioritized backend support. The primary interface for Keyring
   backend classes has been refactored to now emit a 'priority' based on the
   current environment (operating system, libraries available, etc). These
   priorities provide an indication of the applicability of that backend for
   the current environment. Users are still welcome to specify a particular
   backend in configuration, but the default behavior should now be to select
   the most appropriate backend by default.

-----
1.6.1
-----

* Only include pytest-runner in 'setup requirements' when ptr invocation is
  indicated in the command-line (Issue #105).

---
1.6
---

*  GNOME Keyring backend:

   - Use the same attributes (``username`` / ``service``) as the SecretService
     backend uses, allow searching for old ones for compatibility.
   - Also set ``application`` attribute.
   - Correctly handle all types of errors, not only ``CANCELLED`` and ``NO_MATCH``.
   - Avoid printing warnings to stderr when GnomeKeyring is not available.

* Secret Service backend:

   - Use a better label for passwords, the same as GNOME Keyring backend uses.

---
1.5
---

*  SecretService: allow deleting items created using previous python-keyring
   versions.

   Before the switch to secretstorage, python-keyring didn't set "application"
   attribute. Now in addition to supporting searching for items without that
   attribute, python-keyring also supports deleting them.

*  Use ``secretstorage.get_default_collection`` if it's available.

   On secretstorage 1.0 or later, python-keyring now tries to create the
   default collection if it doesn't exist, instead of just raising the error.

*  Improvements for tests, including fix for Issue #102.

---
1.4
---

* Switch GnomeKeyring backend to use native libgnome-keyring via
  GObject Introspection, not the obsolete python-gnomekeyring module.

---
1.3
---

* Use the `SecretStorage library <https://pypi.python.org/pypi/SecretStorage>`_
  to implement the Secret Service backend (instead of using dbus directly).
  Now the keyring supports prompting for and deleting passwords. Fixes #69,
  #77, and #93.
* Catch `gnomekeyring.IOError` per the issue `reported in Nova client
  <https://bugs.launchpad.net/python-novaclient/+bug/1116302>`_.
* Issue #92 Added support for delete_password on Mac OS X Keychain.

-----
1.2.3
-----

* Fix for Encrypted File backend on Python 3.
* Issue #97 Improved support for PyPy.

-----
1.2.2
-----

* Fixed handling situations when user cancels kwallet dialog or denies access
  for the app.

-----
1.2.1
-----

* Fix for kwallet delete.
* Fix for OS X backend on Python 3.
* Issue #84: Fix for Google backend on Python 3 (use of raw_input not caught
  by 2to3).

---
1.2
---

* Implemented delete_password on most keyrings. Keyring 2.0 will require
  delete_password to implement a Keyring. Fixes #79.

-----
1.1.2
-----

* Issue #78: pyfilesystem backend now works on Windows.

-----
1.1.1
-----

* Fixed MANIFEST.in so .rst files are included.

---
1.1
---

This is the last build that will support installation in a pure-distutils
mode. Subsequent releases will require setuptools/distribute to install.
Python 3 installs have always had this requirement (for 2to3 install support),
but starting with the next minor release (1.2+), setuptools will be required.

Additionally, this release has made some substantial refactoring in an
attempt to modularize the backends. An attempt has been made to maintain 100%
backward-compatibility, although if your library does anything fancy with
module structure or clasess, some tweaking may be necessary. The
backward-compatible references will be removed in 2.0, so the 1.1+ releases
represent a transitional implementation which should work with both legacy
and updated module structure.

* Added a console-script 'keyring' invoking the command-line interface.
* Deprecated _ExtensionKeyring.
* Moved PasswordSetError and InitError to an `errors` module (references kept
  for backward-compatibility).
* Moved concrete backend implementations into their own modules (references
  kept for backward compatibility):

  - OSXKeychain -> backends.OS_X.Keyring
  - GnomeKeyring -> backends.Gnome.Keyring
  - SecretServiceKeyring -> backends.SecretService.Keyring
  - KDEKWallet -> backends.kwallet.Keyring
  - BasicFileKeyring -> backends.file.BaseKeyring
  - CryptedFileKeyring -> backends.file.EncryptedKeyring
  - UncryptedFileKeyring -> backends.file.PlaintextKeyring
  - Win32CryptoKeyring -> backends.Windows.EncryptedKeyring
  - WinVaultKeyring -> backends.Windows.WinVaultKeyring
  - Win32CryptoRegistry -> backends.Windows.RegistryKeyring
  - select_windows_backend -> backends.Windows.select_windows_backend
  - GoogleDocsKeyring -> backends.Google.DocsKeyring
  - Credential -> keyring.credentials.Credential
  - BaseCredential -> keyring.credentials.SimpleCredential
  - EnvironCredential -> keyring.credentials.EnvironCredential
  - GoogleEnvironCredential -> backends.Google.EnvironCredential
  - BaseKeyczarCrypter -> backends.keyczar.BaseCrypter
  - KeyczarCrypter -> backends.keyczar.Crypter
  - EnvironKeyczarCrypter -> backends.keyczar.EnvironCrypter
  - EnvironGoogleDocsKeyring -> backends.Google.KeyczarDocsKeyring
  - BasicPyfilesystemKeyring -> backends.pyfs.BasicKeyring
  - UnencryptedPyfilesystemKeyring -> backends.pyfs.PlaintextKeyring
  - EncryptedPyfilesystemKeyring -> backends.pyfs.EncryptedKeyring
  - EnvironEncryptedPyfilesystemKeyring -> backends.pyfs.KeyczarKeyring
  - MultipartKeyringWrapper -> backends.multi.MultipartKeyringWrapper

* Officially require Python 2.5 or greater (although unofficially, this
  requirement has been in place since 0.10).

---
1.0
---

This backward-incompatible release attempts to remove some cruft from the
codebase that's accumulated over the versions.

* Removed legacy file relocation support. `keyring` no longer supports loading
  configuration or file-based backends from ~. If upgrading from 0.8 or later,
  the files should already have been migrated to their new proper locations.
  If upgrading from 0.7.x or earlier, the files will have to be migrated
  manually.
* Removed CryptedFileKeyring migration support. To maintain an existing
  CryptedFileKeyring, one must first upgrade to 0.9.2 or later and access the
  keyring before upgrading to 1.0 to retain the existing keyring.
* File System backends now create files without group and world permissions.
  Fixes #67.

------
0.10.1
------

* Merged 0.9.3 to include fix for #75.

----
0.10
----

* Add support for using `Keyczar <http://www.keyczar.org/>`_ to encrypt
  keyrings. Keyczar is "an open source cryptographic toolkit designed to make
  it easier and safer for developers to use cryptography in their
  applications."
* Added support for storing keyrings on Google Docs or any other filesystem
  supported by pyfilesystem.
* Fixed issue in Gnome Keyring when unicode is passed as the service name,
  username, or password.
* Tweaked SecretService code to pass unicode to DBus, as unicode is the
  preferred format.
* Issue #71 - Fixed logic in CryptedFileKeyring.
* Unencrypted keyring file will be saved with user read/write (and not group
  or world read/write).

-----
0.9.3
-----

* Ensure migration is run when get_password is called. Fixes #75. Thanks to
  Marc Deslauriers for reporting the bug and supplying the patch.

-----
0.9.2
-----

* Keyring 0.9.1 introduced a whole different storage format for the
  CryptedFileKeyring, but this introduced some potential compatibility issues.
  This release incorporates the security updates but reverts to the INI file
  format for storage, only encrypting the passwords and leaving the service
  and usernames in plaintext. Subsequent releases may incorporate a new
  keyring to implement a whole-file encrypted version. Fixes #64.
* The CryptedFileKeyring now requires simplejson for Python 2.5 clients.

-----
0.9.1
-----

* Fix for issue where SecretServiceBackend.set_password would raise a
  UnicodeError on Python 3 or when a unicode password was provided on Python
  2.
* CryptedFileKeyring now uses PBKDF2 to derive the key from the user's
  password and a random hash. The IV is chosen randomly as well. All the
  stored passwords are encrypted at once. Any keyrings using the old format
  will be automatically converted to the new format (but will no longer be
  compatible with 0.9 and earlier). The user's password is no longer limited
  to 32 characters. PyCrypto 2.5 or greater is now required for this keyring.

---
0.9
---

* Add support for GTK 3 and secret service D-Bus. Fixes #52.
* Issue #60 - Use correct method for decoding.

-----
0.8.1
-----

* Fix regression in keyring lib on Windows XP where the LOCALAPPDATA
  environment variable is not present.

---
0.8
---

* Mac OS X keyring backend now uses subprocess calls to the `security`
  command instead of calling the API, which with the latest updates, no
  longer allows Python to invoke from a virtualenv. Fixes issue #13.
* When using file-based storage, the keyring files are no longer stored
  in the user's home directory, but are instead stored in platform-friendly
  locations (`%localappdata%\Python Keyring` on Windows and according to
  the freedesktop.org Base Dir Specification
  (`$XDG_DATA_HOME/python_keyring` or `$HOME/.local/share/python_keyring`)
  on other operating systems). This fixes #21.

*Backward Compatibility Notice*

Due to the new storage location for file-based keyrings, keyring 0.8
supports backward compatibility by automatically moving the password
files to the updated location. In general, users can upgrade to 0.8 and
continue to operate normally. Any applications that customize the storage
location or make assumptions about the storage location will need to take
this change into consideration. Additionally, after upgrading to 0.8,
it is not possible to downgrade to 0.7 without manually moving
configuration files. In 1.0, the backward compatibilty
will be removed.

-----
0.7.1
-----

* Removed non-ASCII characters from README and CHANGES docs (required by
  distutils if we're to include them in the long_description). Fixes #55.

---
0.7
---

* Python 3 is now supported. All tests now pass under Python 3.2 on
  Windows and Linux (although Linux backend support is limited). Fixes #28.
* Extension modules on Mac and Windows replaced by pure-Python ctypes
  implementations. Thanks to Jerome Laheurte.
* WinVaultKeyring now supports multiple passwords for the same service. Fixes
  #47.
* Most of the tests don't require user interaction anymore.
* Entries stored in Gnome Keyring appears now with a meaningful name if you try
  to browser your keyring (for ex. with Seahorse)
* Tests from Gnome Keyring no longer pollute the user own keyring.
* `keyring.util.escape` now accepts only unicode strings. Don't try to encode
  strings passed to it.

-----
0.6.2
-----

* fix compiling on OSX with XCode 4.0

-----
0.6.1
-----

* Gnome keyring should not be used if there is no DISPLAY or if the dbus is
  not around (https://bugs.launchpad.net/launchpadlib/+bug/752282).

---
0.6
---

* Added `keyring.http` for facilitating HTTP Auth using keyring.

* Add a utility to access the keyring from the command line.
jperkin pushed a commit that referenced this pull request Apr 15, 2014
8.5.4

    Issue #32: Add logging around large DCC messages to facilitate
    troubleshooting.
    Issue #31: Fix error in connection wrapper for SSL example.

8.5.3

    Issue #28: Fix TypeError in version calculation in irc.bot CTCP version.

8.5.2

    Updated DCC send and receive scripts (Issue #27).

8.5.1

    Fix timestamp support in schedule.DelayedCommand construction.

8.5

    irc.client.NickMask is now a Unicode object on Python 2. Fixes issue
    reported in pull request #19.
    Issue #24: Added DCCConnection.send_bytes for transmitting binary data.
    privmsg remains to support transmitting text.

8.4

    Code base now runs natively on Python 2 and Python 3, but requires six to
    be installed.
    Issue #25: Rate-limiting has been updated to be finer grained (preventing
    bursts exceeding the limit following idle periods).

8.3.2

    Issue #22: Catch error in bot.py on NAMREPLY when nick is not in any visible
    channel.

8.3.1

    Fixed encoding errors in server on Python 3.

8.3

    Added a set_keepalive method to the ServerConnection. Sends a periodic PING
    message every indicated interval.

8.2

    Added support for throttling send_raw messages via the ServerConnection
    object. For example, on any connection object:

        connection.set_rate_limit(30)

    That would set the rate limit to 30 Hz (30 per second). Thanks to Jason Kendall for the suggestion and bug fixes.

8.1.2

    Fix typo in client.NickMask.

8.1.1

    Fix typo in bot.py.

8.1

    Issue #15: Added client support for ISUPPORT directives on server connections. Now, each ServerConnection has a features attribute which reflects the features supported by the server. See the docs for irc.features for details about the implementation.

8.0.1

    Issue #14: Fix errors when handlers of the same priority are added under Python 3. This also fixes the unintended behavior of allowing handlers of the same priority to compare as unequal.

8.0

This release brings several backward-incompatible changes to the scheduled commands.

    Refactored implementation of schedule classes. No longer do they override the datetime constructor, but now only provide suitable classmethods for construction in various forms.
    Removed backward-compatible references from irc.client.
    Remove 'arguments' parameter from scheduled commands.

Clients that reference the schedule classes from irc.client or that construct them from the basic constructor will need to update to use the new class methods:

- DelayedCommand -> DelayedCommand.after
- PeriodicCommand -> PeriodicCommand.after

Arguments may no longer be passed to the 'function' callback, but one is encouraged instead to use functools.partial to attach parameters to the callback. For example:

DelayedCommand.after(3, func, ('a', 10))

becomes:

func = functools.partial(func, 'a', 10)
DelayedCommand.after(3, func)

This mode puts less constraints on the both the handler and the caller. For example, a caller can now pass keyword arguments instead:

func = functools.partial(func, name='a', quantity=10)
DelayedCommand.after(3, func)

Readability, maintainability, and usability go up.
7.1.2

    Issue #13: TypeError on Python 3 when constructing PeriodicCommand (and thus execute_every).

7.1.1

    Fixed regression created in 7.0 where PeriodicCommandFixedDelay would only cause the first command to be scheduled, but not subsequent ones.

7.1

    Moved scheduled command classes to irc.schedule module. Kept references for backwards-compatibility.

7.0

    PeriodicCommand now raises a ValueError if it's created with a negative or zero delay (meaning all subsequent commands are immediately due). This fixes #12.

    Renamed the parameters to the IRC object. If you use a custom event loop and your code constructs the IRC object with keyword parameters, you will need to update your code to use the new names, so:

    IRC(fn_to_add_socket=adder, fn_to_remove_socket=remover, fn_to_add_timeout=timeout)

    becomes:

    IRC(on_connect=adder, on_disconnect=remover, on_schedule=timeout)

    If you don't use a custom event loop or you pass the parameters positionally, no change is necessary.

6.0.1

    Fixed some unhandled exceptions in server client connections when the client would disconnect in response to messages sent after select was called.

6.0

    Moved LineBuffer and DecodingLineBuffer from client to buffer module. Backward-compatible references have been kept for now.
    Removed daemon mode and log-to-file options for server.
    Miscellaneous bugfixes in server.

5.1.1

    Fix error in 2to3 conversion on irc/server.py (issue #11).

5.1

The IRC library is now licensed under the MIT license.

    Added irc/server.py, based on hircd by Ferry Boender.
    Added support for CAP command (pull request #10), thanks to Danneh Oaks.

5.0

Another backward-incompatible change. In irc 5.0, many of the unnecessary getter functions have been removed and replaced with simple attributes. This change addresses issue #2. In particular:

        Connection._get_socket() -> Connection.socket (including subclasses)
        Event.eventtype() -> Event.type
        Event.source() -> Event.source
        Event.target() -> Event.target
        Event.arguments() -> Event.arguments

The nm_to_* functions were removed. Instead, use the NickMask class attributes.

These deprecated function aliases were removed from irc.client:

- parse_nick_modes -> modes.parse_nick_modes
- parse_channel_modes -> modes.parse_channel_modes
- generated_events -> events.generated
- protocol_events -> events.protocol
- numeric_events -> events.numeric
- all_events -> events.all
- irc_lower -> strings.lower

Also, the parameter name when constructing an event was renamed from eventtype to simply type.
4.0

    Removed deprecated arguments to ServerConnection.connect. See notes on the 3.3 release on how to use the connect_factory parameter if your application requires ssl, ipv6, or other connection customization.

3.6.1

    Filter out disconnected sockets when processing input.

3.6

    Created two new exceptions in irc.client: MessageTooLong and InvalidCharacters.
    Use explicit exceptions instead of ValueError when sending data.

3.5

    SingleServerIRCBot now accepts keyword arguments which are passed through to the ServerConnection.connect method. One can use this to use SSL for connections:

    factory = irc.connection.Factory(wrapper=ssl.wrap_socket)
    bot = irc.bot.SingleServerIRCBot(..., connect_factory = factory)
jperkin pushed a commit that referenced this pull request Mar 16, 2015
## Bugfixes

0.9.2, 2015-02-18 ([changes](simplecov-ruby/simplecov@v0.9.1...v0.9.2))
====================

This is a minor bugfix release for simplecov-html, released as `0.9.0`. Due to the tight version constraint in the gemspec
a new release of simplecov had to be shipped to allow using simplecov-html `~> 0.9.0`.

  * The browser back / forward button should now work again. See [#36](simplecov-ruby/simplecov-html#36) and
    [#35](simplecov-ruby/simplecov-html#35). Thanks @whatasunnyday and @justinsteele for submitting PRs to fix this.
  * Fix "warning: possibly useless use of a variable in void context" See [#31](simplecov-ruby/simplecov-html#31). Thanks @cbandy
  * Always use binary file format. See [#32](simplecov-ruby/simplecov-html#32). Thanks @andy128k
  * Avoid slow file output with JRuby/Windows. See [#16](simplecov-ruby/simplecov-html#16). Thanks @pschambacher

Other than the release includes a bunch of mostly documentation improvements:

  * Update Rails path for Rails 4+. See [#336](simplecov-ruby/simplecov#336). Thanks @yazinsai
  * Encourage use of .simplecov to avoid lost files. See [#338](simplecov-ruby/simplecov#338). thanks @dankohn
  * Specified in the gemspec that simplecov needs ruby 1.8.7. See [#343](simplecov-ruby/simplecov#343). thanks @iainbeeston
  * Fix mispointed link in CHANGELOG.md. See [#353](simplecov-ruby/simplecov#353). Thanks @dleve123
  * Improve command name docs. See [#356](simplecov-ruby/simplecov#356). Thanks @gtd
jperkin pushed a commit that referenced this pull request Jun 1, 2015
Upstream changes:
version 3.27 (2015-05-05)

  [ENHANCEMENTS]

  * Cisco Aironet PSU information
  * Only log adding mibdirs at debug level 2

  [BUG FIXES]

  * [#221] Drop Cisco Voice VLAN 4096

version 3.26 (2015-03-07)

  [ENHANCEMENTS]

  * Add fan and psu reporting to Layer3::Dell
  * Include Voice VLANs in (tagged) VLAN Membership on Cisco devices

  [BUG FIXES]

  * Fix typo in MRO::print_superclasses

version 3.25 (2015-02-25)

  [ENHANCEMENTS]

    * Add new model name mappings for to Layer2::HP

version 3.24 (2015-02-04)

   [ENHANCEMENTS]

    * Support RSTP and ieee8021d STP operating modes in RapidCity

   [BUG FIXES]

    * Fix single instance leafs defined in %FUNCS to behave like table leafs
    * Fix incorrect FDB ID to VLAN ID mapping in Bridge and L3:Enterasys

version 3.23 (2014-12-09)

   [ENHANCEMENTS]

    * Update MIB used in L1::Asante
    * Enhanced STP support for L3::Extreme

   [BUG FIXES]

    * Fix Cisco VLAN membership issue introduced in 3.22 related to capturing
      port VLANs on Cisco interfaces which are configured for trunking but
      are not in operational trunking mode

version 3.22 (2014-12-02)

   [NEW FEATURES]

    * Support obtaining FDB in Avaya SPBM edge deployments in L2::Baystack
      NOTE: This requires a RAPID-CITY MIB with the rcBridgeSpbmMacTable
    * Support for Fortinet devices in new class L3::Fortinet

   [ENHANCEMENTS]

    * Include LLDP support in base Layer2 and Layer3 classes. Due to the
      widespread adoption of LLDP, this should improve mapping networks
      when devices aren't supported in a more specific class.
    * No longer ignore interfaces based on name, in base L2/L3/L7 device
      classes. For several device classes SNMP::Info will now return tunnel
      interfaces and/or loopbacks, if present.
    * Use dot1qVlanCurrentTable if available to capture dynamic and static
      VLANs, fall back to dot1qVlanStaticTable if not available.
    * New method i_vlan_membership_untagged() for VLANs transmitted as
      untagged frames.
    * Capture Aruba AP hardware and software version when available
    * New STP methods to support gathering information from devices running
      mutiple STP instances such as PVST and MST
    * Enhanced STP support for Avaya and Foundry classes

   [BUG FIXES]

    * [#64] Misdetection: Wireless APs, add products MIB to L2::3Com
    * Use FDB ID to VID mapping if available to determine end station VLAN
      rather than assuming they are the same.
    * Capture port VLANs on Cisco interfaces which are configured for
      trunking but are not in operational trunking mode
    * Correct munging of stp_p_port(), i_stp_port(), and stp_root() methods
      in Bridge
    * In LLDP.pm don't create a variable in a conditional

version 3.20 (2014-09-08)

   [NEW FEATURES]

    * Override layers in Juniper for routers with switch modules

   [BUG FIXES]

    * Update MANIFEST to include Ubiquiti files

version 3.19 (2014-08-01)

   [NEW FEATURES]

    * Support for Ubiquiti Access Points in new class L2::Ubiquiti (begemot)
    * Preliminary support for 3Com switches in new class L2::3Com (begemot)

   [BUG FIXES]

    * Fix Avaya detection lldp_port()
    * Silence uninitialized value warning in L3::Cisco
    * H3C fixes (begemot)
    * Only use L2::ZyXEL_DSLAM for ZyXEL DSL modules

version 3.18 (2014-07-02)

   [ENHANCEMENTS]

    * Pseudo ENTITY-MIB methods added to L3::Tasman for hardware information
    * Capture VPC Keepalive IP addresses in L3::Nexus (jeroenvi)
    * L2::Netgear inheritance clean up and removal of unnecessary c_* methods
      defined in Info base class

   [BUG FIXES]

    * Correctly identify device type (class) for instantiated objects which
      have overridden layers.
    * [#58] Fix inheritance in L3::FWSM and L3::CiscoASA
    * [#71] Don't try to match on a false port description in lldp_if
    * [#54] Possible bad values returned for cdp_id and lldp_port with some HP
      gear (Joel Leonhardt)

version 3.17 (2014-06-23)

   [ENHANCEMENTS]

    * POD tests are not required for distribution.

version 3.16 (2014-06-23)

   [ENHANCEMENTS]

    * Add method resolution discovery in SNMP::Info::MRO helper module
    * Consolidate CiscoImage class into CiscoStats class
    * Clean up inheritance for Cisco classes.  With this change
      all applicable classes now inherit CiscoAgg, CiscoStpExtensions,
      CiscoPortSecurity, CiscoPower, and LLDP classes.
    * Remove inheritance of classes the devices do not support in L3::FWSM
      and L3::CiscoASA

   [BUG FIXES]

    * Use CiscoVTP methods to get interface VLAN in L3::Cisco rather than
      solely relying on the interface description.

version 3.15 (2014-07-10)

   [NEW FEATURES]

    * Offline mode and Cache export/priming.

   [ENHANCEMENTS]

    * Return serial number for Cisco 3850 from entPhysicalSerialNum

   [BUG FIXES]

    * Cisco SB serial number probably did not work

version 3.14 (2014-06-07)

   [ENHANCEMENTS]

    * Improvements to Mikrotik module (Alex Z)
    * Don't unshift length from broken lldpRemManAddrTable implementations (G. Shtern)
    * 802.3ad LAG support in Layer3::H3C
    * Add LLDP capabilities to Layer2::HPVC class

   [BUG FIXES]

    * Return correct VLAN info with qb_fw_table() on Layer2::HP

version 3.13 (2014-03-27)

   [ENHANCEMENTS]

    * Cisco PAgP support added to LAG method
    * HP ProCurve LAG support by inheriting Info::Aggregate class

version 3.12 (2014-02-10)

   [ENHANCEMENTS]

    * Modify L3::Passport to obtain forwarding table information from
      RAPID-CITY if information is not available in either Q-BRIDGE-MIB or
      BRIDGE-MIB.  Needed for VSP 9000 prior to version 4.x (Tobias Gerlach)

   [BUG FIXES]

    * [#52] NETSCREEN-IP-ARP-MIB considered harmful
    * Foundry/Brocade aggreate port master ifIndex resolved properly

version 3.11 (2014-01-26)

   [NEW FEATURES]

    * [#31] port-channel (aggregate) support.  Aggregate support added in new
      agg_ports() method.  Inital support added for Arista (ifStack),
      Avaya (MLT), Brocade (MST), and Cisco (802.3ad).

   [ENHANCEMENTS]

    * Use Q-BRIDGE-MIB as default with fallback to BRIDGE-MIB across all
      classes for the fw_mac, fw_port, and fw_status methods
    * Additional support for Avaya 8800 series in L3::Passport

   [BUG FIXES]

    * Modify cdp_cap() to handle devices which return space delimited strings
      for cdpCacheCapabilities rather than hex strings
    * [#51] Netdisco shows broken topology for devices with no alias entry
      for primary IP - Collect nsIfMngIp when getting IP interfaces in
      L3::Netscreen
    * Fix Extreme XOS i_vlan_membership - Revert [28bbe0], fix bug with
      untagged being added to @ret twice (Robert Kerr)
    * Skip default CPU management addresses on VSP and 8800/8600 series in
      L3::Passport to prevent erroneous duplicate addresses

version 3.10 (2013-12-16)

   [BUG FIXES]

    * Data values of zero are now sent to munge method instead of skipped

version 3.09 (2013-12-15)

   [NEW FEATURES]

    * [#45] IBM (Blade Network Technologies) Rackswitch support in new class
      L3::IBMGbTor
    * [] set_i_untagged combines both set_i_vlan and set_i_pvid in one method
    * [#41] Riverbed Steelhead support added in new class L3::Steelhead
    * New c_cap(), cdp_cap(), and lldp_cap() methods which return a hash of
      arrays with each array containing the system capabilities reported as
      supported by the remote system via CDP or LLDP.

   [ENHANCEMENTS]

    * Remove "Switch" from model name in L3::Foundry
    * [#49] IOS-XR support, add identification of IOS XR and version in
      CiscoStats
    * Aruba POE Support
    * Aruba utilizes Q-BRIDGE-MIB when available for VLAN information to
      better support wired switches
    * Add lldp_platform() method which uses lldp_rem_sysdesc() or
      lldp_rem_sysname() to provide a clue to type of remote LLDP capable
      device.
    * [RT#78232] Extend cdpCacheCapabilities to show more CDP bits

   [BUG FIXES]

    * Modify _xos_i_vlan_membership() in L3::Extreme to only include tagged
      ports
    * When determining the BSSID in Airespace there is only one hexadecimal
      digit available so skip if outside the range of 1-16, 17 is reserved
      for 3rd party AP's
    * Don't assume entity index 1 is the chassis and has serial in Layer3
    * Capture serial number on newer Aruba devices
    * munge_bits() correctly unpacks BITS
    * Fix for single instance table leafs in test_class_mocked.pl
    * Fix power module indexing

version 3.08 (2013-10-22)

   [ENHANCEMENTS]

    * Rewrite of L3::Aruba, now supports pseudo ENTITY-MIB methods to gather
      module information, more interface information for APs, more
      wireless information to include client stats, and arpnip information
      from wireless clients.  WARNING: AP device interfaces are now based on
      AP MAC and radio versus BSSID to align with other wireless classes.
    * [#64] Add i_speed_admin() to L2::2900 (psychiatric)
    * [#66] Support for VSS via CISCO-VIRTUAL-SWITCH-MIB in L3::6500
    * [#67] Add the possibility to set speed for Layer3::C4000 (psychiatric)
    * [#69] set speed and duplex on Cisco VSS system (psychiatric)
    * munge_null() now removes all non-printable control characters
    * Support Aironet standalone access points (Layer2::Aironet) running IOS15
    * lldp_port() returns port ID instead of port description if the port ID
      subtype is "interface name".  This improves the ability to correlate
      ports by name when a port description is also set.
    * Add docs note about make_snmpdata.pl under EXTENDING SNMP::Info
    * [#46] Brocade (Foundry) Module Support
    * Brocade (Foundry) POE Support
    * Support peth_port_power() power supplied by PoE ports in L2::Baystack
    * Update test_class.pl utility to allow ignore of snmp.conf and test
      summarize more standard class methods
    * On EOS, the LLDP port ID is a dot1d port
    * Use LLDP in Layer3::Aruba, for switches
    * Clean up more model names in L2::Baystack

   [BUG FIXES]

    * [#68] Fix device_port entries for switches with non-unique
      ifDesc (Nic Bernstein)
    * Don't try to munge undef values
    * [#49] Perl 5.18 UNIVERSAL::can change could cause infinite loop
    * Silence warning from uninitialized variable in L3::Passport e_descr()

version 3.07 (2013-10-01)

   [ENHANCEMENTS]

    * Support for Pica8 switches in L3::Pica8
    * Factor out cache/munge code from global/attr methods

   [BUG FIXES]

   * [#48] Switch duplicate J9624A for J9626A in Layer2/HP (R. Kerr)
   * Correct device serial number reporting for Nexus devices
   * Override ipAddrTable methods in L3::Nexus as some versions do not
     index the table with the IPv4 address in accordance with the MIB
     definition.

version 3.05 (2013-08-16)

   [ENHANCEMENTS]

    * [#47] Add model info on HP 2530 and HP 2920 series
    * Add support for Cisco Small Business series
      Layer2/CiscoSB class
    * Add proper LLDP support to Netgear.pm
    * Change $netgear->interfaces() to use ifName rather than ifDescr
      as the former is unique per interface while the latter is not.
      If ifName is not present, concatenate ifDescr and ifIndex
      to achieve a unique value.
    * Properly report hardware version, Serial No. and OS Version for
      Netgear.

version 3.03 (2013-07-11)

    [BUG FIXES]

    * Add missing =back to POD (A. Hartmaier)

version 3.02 (2013-07-08)

    [ENHANCEMENTS]

    * Properly pull os_ver from Netgear GS series switches.
    * Support Alcatel devices with layer3 features.
    * Identify Cisco Aironet 1140 APs as Layer2::Aironet
    * LAN switch support added to Layer3::Aruba class
    * [RT#86725] - Identify Cisco Catalyst 3850 as Layer3::C6500 (C. Causer)

version 3.01 (2013-04-13)

    [API Changes]

    * The methods c_ip(), c_if(), c_port(), c_id(), and c_platform() now
      represent common topology methods and will try to return a combined
      hash of data from all L2 topology protocols either running on the
      device or specified in the method call.  The topology specific methods
      have been been prefixed with the protocol name in lowercase so that
      they can be called directly, sonmp_ip(), cdp_ip(), etc.
    * L2::Bay and L2::Foundry have been removed from the distribution.  Both
      classes were depreciated and all functionality is available through
      L2::Baystack and L3::Foundry.

    [NEW FEATURES]

    * [3160037] - Support _raw suffix on methods to skip munging
    * [3185391] - Support for F5 devices in new class L3::F5
    * [3323814] - Arp support for Netscreen (David Baldwin)
    * [3323821] - Support for Netscreen w/ WLAN (eg SSG5) (David Baldwin)
    * [3599277] - Q-BRIDGE Support to collect VLAN in macsuck
    * [3033731] - Alcatel-Lucent OmniSwich AMAP Support in new AMAP class
    * [3598896] - Lantronix device support (J R Binks)
    * [3598337] - Lantronix SLC support
    * Support for Cisco ASA in L3::CiscoASA (Kraus/Hartmaier/Bernstein)
    * Support for Avaya VSP 9000 series in L3::Passport
    * Support for Avaya VSP 7000 series in L2::Baystack
    * Support Avaya (Trapeze) Wireless Controllers in new class L2::NWSS2300
    * Support Juniper (Trapeze) Wireless Controllers in new class L2::Trapeze
    * Support for newer Radware Alteon ADC switches 4408/4416/5412/5224 and
      older AWS 2000/3000 series in existing L3::AlteonAD
    * Support for H3C & HP A-series in new class L3::H3C
    * Support for Citrix Netscaler appliances in new class L7::Netscaler
    * New configuration option IgnoreNetSNMPConf will ignore Net-SNMP
      configuration files on object initialization
    * Two new utilities added in t/util to assist in developing device
      support; make_snmpdata.pl gathers SNMP data (snmpwalk) in a format that
      can be used with test_class_mocked.pl which mocks an SNMP agent to
      enable testing with no network access to a device.

    [ENHANCEMENTS]

    * UNIVERSAL::can() now works with dynamic methods
    * Dynamically generated methods are added to symbol table to avoid
      AUTOLOAD on subsequent calls
    * L2::Airespace now supports 802.11n client tx rates
    * L2::Airespace now reports AP Ethernet MAC as port MAC for radio ports
    * CiscoStats improvements to determine os versions, eg IOS XE ver on Sup7L-E
    * CiscoStats now reports 'ios-xe' if the device runs IOS XE (used to be 'ios')
    * Improved support of XOS based Extreme devices

    [BUG FIXES]

    * [3564920] - lldp_if gives wrong data for Enterasys

version 2.11 (2012-12-09)

    [BUG FIXES]

    * Add fall-back for sysDescr on Force10

version 2.10 (2012-12-08)

    [NEW FEATURES]

    * Support for Force10 devices (W. Bulley)
jperkin pushed a commit that referenced this pull request Jul 17, 2015
2015.6.21
=========
----

* Fix #31: HTML entities stay inside link.
* Fix #71: Coverage detects command line tests.
* Fix #39: Documentation update.
* Fix #61: Functionality added for optional use of automatic links.
* Feature #80: ``title`` attribute is preserved in both inline and reference links.
* Feature #82: More command line options. See docs.


2015.6.12
=========
----

* Feature #76: Making ``pre`` blocks clearer for further automatic formatting.
* Fix #71: Coverage detects tests carried out in ``subprocesses``


2015.6.6
========
----

* Fix #24: ``3.200.3`` vs ``2014.7.3`` output quirks.
* Fix #61. Malformed links in markdown output.
* Feature #62: Automatic version number.
* Fix #63: Nested code, anchor bug.
* Fix #64: Proper handling of anchors with content that starts with tags.
* Feature #67: Documentation all over the module.
* Feature #70: Adding tests for the module.
* Fix #73: Typo in config documentation.
jperkin pushed a commit that referenced this pull request Dec 14, 2015
Pkgsrc changes:

- use ${PREFIX} for icon path in example.jwmrc
- rename patch files per new format
- add patch comments
- take maintainership


Upstream changes list from
 http://joewing.net/projects/jwm/release-2.3.shtml

JWM v2.3 Release Notes

This is a collection of major changes between JWM v2.2 and JWM v2.3.
Version 2.3.0 was released 20150618.
You can download the latest snapshot of JWM here: jwm-1356.tar.xz.

New Features

  * Added support for client requested XRaiseWindow (issue #117).
  * Added native language support for the confirm dialog.
  * Added support for _NET_RESTACK_WINDOW (issue #118).
  * Added key binding to send the current window to a different desktop (issue
    #119).
  * Support the specification of an alternate configuration file (patch from
    Brian Bidulock)
  * Added Corner option to configure the roundedness of windows.
  * Updated the look of borders around menus and trays.
  * Add support for _NET_WM_MOVERESIZE (issue #142).
  * Add the fullscreen group option (patch from George Shaw).
  * Made window style configuration more consistent (may break old
    configuration files).
  * Add scale background type.
  * Added group options: nomin, nomax, noclose, nomove, noresize (issue #152),
    and nofullscreen (issue #163).
  * Added the Outline tag to MenuStyle to specify the color of menu outlines
    (issue #31).
  * Added the Outline tag to TrayStyle to specify the color of tray outlines.
  * To conform with GNU standards, running "make install" no longer strips the
    executable. To strip the executable, "make install?strip" can be used
    instead.
  * Added the ability to swallow the same client into a tray multiple times.
  * Added the ability to specify where the tray is hidden when auto-hide is
    enabled (issue #34).
  * Menu Includes are now loaded dynamically when a menu is shown rather than
    when JWM starts.
  * Added the sendu, sendd, sendl and sendr key bindings to send a window to a
    different desktop (issue #119).
  * Added the maxh, maxv, maxtop, maxbottom, maxleft and maxright key bindings
    (issues #120 and #157).
  * Added the ability to have separate actions per mouse button for tray
    buttons (issue #171). This is accomplished using the Button tag. For
    example:
    <TrayButton label="My Button">
      <Button mask="1">
        exec:program_for_left_click
      </Button>
      <Button mask="45">
        exec:program_for_scroll_wheel
      </Button>
    </TrayButton>
    The Button tags are optional. By default the action will use mouse button
    mask 123.
  * Add the ability to have separate actions per mouse button for clock tray
    components (issue #171) and the ability to have clock tray components run
    actions like tray buttons (issue #172).
  * Add support for more than 10 menus. Now 26 additional menus can be defined
    using the letters a through z.

Configuration Changes

The following XSLT is available to update JWM v2.2 configuration files for use
with JWM v2.3: jwm-2.3.xslt.

To convert an existing v2.2 configuration file using xsltproc, run:

cp ~/.jwmrc ~/.jwmrc.old
xsltproc jwm-2.3.xslt ~/.jwmrc.old > ~/.jwmrc

If you have multiple configuration files, it may be necessary to apply the XSLT
to some or all of them depending on what configuration options are stored in
the file.

A summary of configuration changes follows.

  * The ActiveBackground and ActiveForeground tags have been replaced by
    Background and Foreground under the Active tag. This applies to TrayStyle,
    TaskListStyle, TrayButtonStyle, PagerStyle, and MenuStyle.
  * The Inactive tag under WindowStyle has been removed. The tags that used to
    go within this tag now go directly under the WindowStyle tag.
  * The autohide attribute in Tray now determines where the tray should be
    hidden (left, right, top, bottom, or off) instead of true or false.
  * Now actions in the Clock tag must be prefixed with exec: to run an external
    program.

See the configuration documentation for documentation on all configuration
options.

Bug Fixes

  * ICCCM 2.0 WM_S selection compliance (patch from Brian Bidulock).
  * Fixed client window position after maximize/restore (issue #115, patch from
    Biran Bidulock).
  * Fixed window mapping bug with show desktop (issue #114).
  * Give focus to the top-most window after show desktop (issue #64).
  * Fix uninitialized memory when loading images (patch from Brian Bidulock).
  * Fix overlapping string issue with FriBidi (patch from Brian Bidulock).
  * Fixed non-UTF8 locales (issue #56).
  * Fixed transparency issue with some applications (issue #130).
  * Fixed focus after key events (patch from Brian Bidulock).
  * Fixed loss of focus after restoring windows (issue #131).
  * Fix setting of _NET_WM_STATE_HIDDEN when a window is minimized (issue #133,
    patch from Brian Bidulock).
  * Grab input focus at startup if not already set (issue #148).

Updated Translations

  * Russian (Aleksandr Samusenko)
  * French (Pierrick)
  * Italian (Flavio aka Man from Mars)
  * Spanish (Pablo Lezaeta)

Changes in 2.3.1 (20150628)

  * Added an option to group windows by class in the task bar. (the group
    attribute of the TrayStyle tag).
  * Fixed an issue with menus showing up across monitors when Xinerama is
    enabled.
  * Added the ability to show Motif-style handles on windows (the decorations
    attribute of WindowStyle).
  * Fixed an issue where the next/prev key bindings would not advance past a
    window that does not accept input focus.
  * Fixed the behavior of the Include tag within menus so that it no longer
    creates a submenu.
  * Menus included using Include are no longer loaded each time the menu is
    accessed.
  * Added a Dynamic submenu that will re-load its menu contents each time it is
    accessed.

Changes in 2.3.2 (20150913)

  * Restored the ability to specifiy that windows should not have an icon
    (using the "icon:" group option).
  * JWM will now try several common extensions when loading icons.
  * Fixed the height and default label for dynamic menus (issue #188).
  * Improved handling of colormaps for pseudo-color displays.
  * Fixed handling of WM_STATE on big-endian machines.
  * Fixed an issue with menus getting stuck open.
  * Removed the TaskListStyle, TrayButtonStyle, and ClockStyle configuration
    options. These options are now set from TrayStyle.
  * Added the Hungarian translation (from Hermit).
  * Added the ability to give a 3D look to menus and trays by specifying
    decorations="motif" in MenuStyle and TrayStyle respectively.
  * Fixed an issue where JWM key bindings would not be available to
    applications (issue #201).
  * JWM now highlights the first menu item when opening a menu with the
    keyboard (issue #102).
  * Add the ability to selectively enable popups (issue #189).
  * Various other fixes.

Changes in 2.3.3 (20151118)

  * JWM windows now set _NET_WM_WINDOW_TYPE (issue #223).
  * Added the Chinese translation (from Christopher Meng).
  * Added the height attribute to TaskList (issue #227).
  * Fixed tray button mouse bindings for the scroll wheel buttons (issue #229).
  * Added the restore key binding (issue #233).
  * Made middle-click on a task list item close the window (issue #232).
  * Added support for tooltips in menus (issue #111).
  * Added Portuguese (Brazil) translation (from Holmes).
  * Fixed an issue where the dock would change size if its size was not
    explicitly set (issue #238).
  * Fixed the height calculation of vertical trays (issue #228).

Changes in 2.3.4 (20151122)

  * Now a negative tray width/height can be specified to subtract from the
    screen width/height (issue #250).
  * Added the list configuration option to TrayStyle to allow displaying
    windows from all desktops (all) or only the current desktop (the default,
    desktop) in task lists.
  * Improved scaling of JPEG and SVG images (issue #253).
  * Fixed the rendering of fixed-aspect background images.
  * Added the drag group option (issue #235).
  * Fixed rendering of window borders without a title bar.
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 Feb 2, 2016
--------------------
0.32 2015-08-25T02:09:18Z
	- fix compatibility issue on Solaris (thanks to Syohei YOSHIDA) #40

0.31 2015-07-20T02:38:57Z
	- do not remove the socket file when becoming a daemon (thanks to
          andyjones) #34 #36
	- emit name of the directory to which it failed to chdir(2) (thanks
          to tokuhirom) #33

0.30 2015-06-05T05:28:43Z
	- unlink the status file only when created by itself (thanks to
          tokuhirom) #32
	- redo #26 (thanks to tokuhirom) #31

0.29 2015-06-04T06:45:26Z
	- build should fail on Windows (thanks to chorny) #26
	- add `--stop` option (thanks to tokuhirom) #28
	- do not close STDIN in case the listening port is mapped to fd
          zero (thanks to tokuhirom) #29 #24
	- reopen STDIN to suppress unnecessary warnings (thanks to
          touhirom) #30

0.28 2015-05-28T22:08:37Z
	- add `--port=[host:]port=fd` option for specifying the file
          descriptor number (thanks to tokuhirom) #24

0.27 2015-04-28T01:02:28Z
	- revert 0.26 so that the install script can update the
	- shebang (thanks to miyagawa) #22 modernize the build tool
	- (thanks to miyagawa) #23
0.26
	- `start_server` command uses perl found in $PATH instead of
          /usr/bin/perl #21
0.25
	- fix `already in use` error if the program is restarted
          (regression in 0.21) #18
	- tests now pass on environments wo. IPv6 support #19
0.24
	- introduce --daemonize option (#18 #6)
	- fix bug that causes a infinite loop in shutdown (amends #14)
0.23
	- set IPV6_V6ONLY for socket bound to an IPv6 address (#16)
0.22
	- support for IPv6 (#16)
	- include repository URL in META.yml (#15; thanks to ether)
0.21
	- remove dependency against non-standard modules (#14)
0.19
	- reimplement changes in 0.15, 0.16 for stability (#13)
	- update inc/Module/Install
jperkin pushed a commit that referenced this pull request Feb 11, 2016
--------------------
0.32 2015-08-25T02:09:18Z
	- fix compatibility issue on Solaris (thanks to Syohei YOSHIDA) #40

0.31 2015-07-20T02:38:57Z
	- do not remove the socket file when becoming a daemon (thanks to
          andyjones) #34 #36
	- emit name of the directory to which it failed to chdir(2) (thanks
          to tokuhirom) #33

0.30 2015-06-05T05:28:43Z
	- unlink the status file only when created by itself (thanks to
          tokuhirom) #32
	- redo #26 (thanks to tokuhirom) #31

0.29 2015-06-04T06:45:26Z
	- build should fail on Windows (thanks to chorny) #26
	- add `--stop` option (thanks to tokuhirom) #28
	- do not close STDIN in case the listening port is mapped to fd
          zero (thanks to tokuhirom) #29 #24
	- reopen STDIN to suppress unnecessary warnings (thanks to
          touhirom) #30

0.28 2015-05-28T22:08:37Z
	- add `--port=[host:]port=fd` option for specifying the file
          descriptor number (thanks to tokuhirom) #24

0.27 2015-04-28T01:02:28Z
	- revert 0.26 so that the install script can update the
	- shebang (thanks to miyagawa) #22 modernize the build tool
	- (thanks to miyagawa) #23
0.26
	- `start_server` command uses perl found in $PATH instead of
          /usr/bin/perl #21
0.25
	- fix `already in use` error if the program is restarted
          (regression in 0.21) #18
	- tests now pass on environments wo. IPv6 support #19
0.24
	- introduce --daemonize option (#18 #6)
	- fix bug that causes a infinite loop in shutdown (amends #14)
0.23
	- set IPV6_V6ONLY for socket bound to an IPv6 address (#16)
0.22
	- support for IPv6 (#16)
	- include repository URL in META.yml (#15; thanks to ether)
0.21
	- remove dependency against non-standard modules (#14)
0.19
	- reimplement changes in 0.15, 0.16 for stability (#13)
	- update inc/Module/Install
jperkin pushed a commit that referenced this pull request Feb 19, 2016
Mon Jan 25, 2016 - v1.0.8
- Use backward compatible positional arguments (not named keyword arguments)
  Resolves Issue #31

Mon Jan 25, 2016 - v1.0.7
- Support alternative comment types (default: ['#', ';']) (@voobscout)
  Resolves Issue #30
jperkin pushed a commit that referenced this pull request Mar 18, 2016
* Test against Jekyll 2 and 3. (#30)
* watcher: set LISTEN_GEM_DEBUGGING if --verbose flag set (#31)
* Apply Rubocop auditing and fix up (#32)
jperkin pushed a commit that referenced this pull request Apr 11, 2016
* Convert to use option framework

Changelog:
Version 15.14
=============

  - patch #26 : Patch to correctly set permissions for docs that permits non-sudo deletion of docs

  - patch #27 : Update Mac OS X LLVM 64bits Makefile

  - patch #28 : p7zip version 15.09 fails to build on s390

  - patch #29 : please fix incorrect fsf address

  - patch #31 : p7zip 15.09 fails to build on mips

  - bug :  "7za a -p ..." was fixed

  - bug #172 : Impossible to create archive with some unicode symbols in filename

  - From Windows version of 7-Zip 15.13:
    - The BUG in 15.13 in CAB code was fixed.

  - From Windows version of 7-Zip 15.12:
    - Some bugs were fixed.
    - New localization: Yoruba.

  - test_emul becomes test_lib  (tests libraries)

  - cross building added :
		makefile.linux_cross_mipsel

  - support for android 5+ (-fPIE -pie)

Version 15.12 (never published)
=============
  - From Windows version of 7-Zip 15.12 :
    - "There are no errors" string after "Test" operation inside archive.
    - The bugs in LZMA SDK were fixed (but these bugs are not related directly to 7-Zip's code).


  - From Windows version of 7-Zip 15.11 :
        - Some bugs were fixed.
        - 7-Zip 15.10 showed incorrect error message about missing volume for multivolume RAR archives.

   - ..../LZHAM added



Version 15.10 beta
==================

  - bug #147 Directory traversal through symlinks
    Bug-Debian: https://bugs.debian.org/774660
    Delay creation of symlinks to prevent arbitrary file writes (CVE-2015-1038)
    Fix given by Ben Hutchings

  - From Windows version of 7-zip 15.10 beta:
    - The BUG in 9.21 - 15.09 was fixed:
      7-Zip could ignore some parameters, specified for archive creation operation
	  for gzip and bzip2 formats in "Add to Archive" window and in command line
	  version (-m switch).
    - Some bugs were fixed.
      - extracting from solid wim archives worked incorrectly in some cases,
    - Also there are some minor changes.
      - 7-Zip can show the name of missing volume for multivolume RAR and VMDK archives.
      - Some internal changes with 7-Zip Benchmark.
jperkin pushed a commit that referenced this pull request Aug 24, 2016
NEWS:
Version 2.5.3
-------------
- Updated zoneinfo to 2016d
- Fixed parser bug where unambiguous datetimes fail to parse when dayfirst is
  set to true. (gh issue #233, pr #234)
- Bug in zoneinfo file on platforms such as Google App Engine which do not
  do not allow importing of subprocess.check_call was reported and fixed by
  @savraj (gh issue #239, gh pr #240)
- Fixed incorrect version in documentation (gh issue #235, pr #243)

Version 2.5.2
-------------
- Updated zoneinfo to 2016c
- Fixed parser bug where yearfirst and dayfirst parameters were not being
  respected when no separator was present. (gh issue #81 and #217, pr #229)

Version 2.5.1
-------------
- Updated zoneinfo to 2016b
- Changed MANIFEST.in to explicitly include test suite in source distributions,
  with help from @koobs (gh issue #193, pr #194, #201, #221)
- Explicitly set all line-endings to LF, except for the NEWS file, on a
  per-repository basis (gh pr #218)
- Fixed an issue with improper caching behavior in rruleset objects (gh issue
  #104, pr #207)
- Changed to an explicit error when rrulestr strings contain a missing BYDAY
  (gh issue #162, pr #211)
- tzfile now correctly handles files containing leapcnt (although the leapcnt
  information is not actually used). Contributed by @hjoukl (gh issue #146, pr
  #147)
- Fixed recursive import issue with tz module (gh pr #204)
- Added compatibility between tzwin objects and datetime.time objects (gh issue
  #216, gh pr #219)
- Refactored monolithic test suite by module (gh issue #61, pr #200 and #206)
- Improved test coverage in the relativedelta module (gh pr #215)
- Adjusted documentation to reflect possibly counter-intuitive properties of
  RFC-5545-compliant rrules, and other documentation improvements in the rrule
  module (gh issue #105, gh issue #149 - pointer to the solution by @phep,
  pr #213).


Version 2.5.0
-------------
- Updated zoneinfo to 2016a
- zoneinfo_metadata file version increased to 2.0 - the updated updatezinfo.py
  script will work with older zoneinfo_metadata.json files, but new metadata
  files will not work with older updatezinfo.py versions. Additionally, we have
  started hosting our own mirror of the Olson databases on a github pages
  site (https://dateutil.github.io/tzdata/) (gh pr #183)
- dateutil zoneinfo tarballs now contain the full zoneinfo_metadata file used
  to generate them. (gh issue #27, gh pr #85)
- relativedelta can now be safely subclassed without derived objects reverting
  to base relativedelta objects as a result of arithmetic operations.
  (lp:1010199, gh issue #44, pr #49)
- relativedelta 'weeks' parameter can now be set and retrieved as a property of
  relativedelta instances. (lp: 727525, gh issue #45, pr #49)
- relativedelta now explicitly supports fractional relative weeks, days, hours,
  minutes and seconds. Fractional values in absolute parameters (year, day, etc)
  are now deprecated. (gh issue #40, pr #190)
- relativedelta objects previously did not use microseconds to determine of two
  relativedelta objects were equal. This oversight has been corrected.
  Contributed by @elprans (gh pr #113)
- rrule now has an xafter() method for retrieving multiple recurrences after a
  specified date. (gh pr #38)
- str(rrule) now returns an RFC2445-compliant rrule string, contributed by
  @schinckel and @armicron (lp:1406305, gh issue #47, prs #50, #62 and #160)
- rrule performance under certain conditions has been significantly improved
  thanks to a patch contributed by @dekoza, based on an article by Brian Beck
  (@exogen) (gh pr #136)
- The use of both the 'until' and 'count' parameters is now deprecated as
  inconsistent with RFC2445 (gh pr #62, #185)
- Parsing an empty string will now raise a ValueError, rather than returning the
  datetime passed to the 'default' parameter. (gh issue #78, pr #187)
- tzwinlocal objects now have a meaningful repr() and str() implementation
  (gh issue #148, prs #184 and #186)
- Added equality logic for tzwin and tzwinlocal objects. (gh issue #151,
  pr #180, #184)
- Added some flexibility in subclassing timelex, and switched the default
  behavior over to using string methods rather than comparing against a fixed
  list. (gh pr #122, #139)
- An issue causing tzstr() to crash on Python 2.x was fixed. (lp: 1331576,
  gh issue #51, pr #55)
- An issue with string encoding causing exceptions under certain circumstances
  when tzname() is called was fixed. (gh issue #60, #74, pr #75)
- Parser issue where calling parse() on dates with no day specified when the
  day of the month in the default datetime (which is "today" if unspecified) is
  greater than the number of days in the parsed month was fixed (this issue
  tended to crop up between the 29th and 31st of the month, for obvious reasons)
  (canonical gh issue #25, pr #30, #191)
- Fixed parser issue causing fuzzy_with_tokens to raise an unexpected exception
  in certain circumstances. Contributed by @MichaelAquilina (gh pr #91)
- Fixed parser issue where years > 100 AD were incorrectly parsed. Contributed
  by @Bachmann1234 (gh pr #130)
- Fixed parser issue where commas were not a valid separator between seconds
  and microseconds, preventing parsing of ISO 8601 dates. Contributed by
  @RyansS (gh issue #28, pr #106)
- Fixed issue with tzwin encoding in locales with non-Latin alphabets
  (gh issue #92, pr #98)
- Fixed an issue where tzwin was not being properly imported on Windows.
  Contributed by @labrys. (gh pr #134)
- Fixed a problem causing issues importing zoneinfo in certain circumstances.
  Issue and solution contributed by @alexxv (gh issue #97, pr #99)
- Fixed an issue where dateutil timezones were not compatible with basic time
  objects. One of many, many timezone related issues contributed and tested by
  @labrys. (gh issue #132, pr #181)
- Fixed issue where tzwinlocal had an invalid utcoffset. (gh issue #135,
  pr #141, #142)
- Fixed issue with tzwin and tzwinlocal where DST transitions were incorrectly
  parsed from the registry. (gh issue #143, pr #178)
- updatezinfo.py no longer suppresses certain OSErrors. Contributed by @bjamesv
  (gh pr #164)
- An issue that arose when timezone locale changes during runtime has been
  fixed by @carlosxl and @mjschultz (gh issue #100, prs #107, #109)
- Python 3.5 was added to the supported platforms in the metadata (@tacaswell
  gh pr #159) and the test suites (@moreati gh pr #117).
- An issue with tox failing without unittest2 installed in Python 2.6 was fixed
  by @moreati (gh pr #115)
- Several deprecated functions were replaced in the tests by @moreati
  (gh pr #116)
- Improved the logic in Travis and Appveyor to alleviate issues where builds
  were failing due to connection issues when downloading the IANA timezone
  files. In addition to adding our own mirror for the files (gh pr #183), the
  download is now retried a number of times (with a delay) (gh pr #177)
- Many failing doctests were fixed by @moreati. (gh pr #120)
- Many fixes to the documentation (gh pr #103, gh pr #87 from @radarhere,
  gh pr #154 from @gpoesia, gh pr #156 from @awsum, gh pr #168 from @ja8zyjits)
- Added a code coverage tool to the CI to help improve the library. (gh pr #182)
- We now have a mailing list - [email protected], graciously hosted by
  Python.org.


Version 2.4.2
-------------
- Updated zoneinfo to 2015b.
- Fixed issue with parsing of tzstr on Python 2.7.x; tzstr will now be decoded
  if not a unicode type. gh #51 (lp:1331576), gh pr #55.
- Fix a parser issue where AM and PM tokens were showing up in fuzzy date
  stamps, triggering inappropriate errors. gh #56 (lp: 1428895), gh pr #63.
- Missing function "setcachesize" removed from zoneinfo __all__ list by @RyansS,
  fixing an issue with wildcard imports of dateutil.zoneinfo. (gh pr #66).
- (PyPi only) Fix an issue with source distributions not including the test
  suite.


Version 2.4.1
-------------

- Added explicit check for valid hours if AM/PM is specified in parser.
  (gh pr #22, issue #21)
- Fix bug in rrule introduced in 2.4.0 where byweekday parameter was not
  handled properly. (gh pr #35, issue #34)
- Fix error where parser allowed some invalid dates, overwriting existing hours
  with the last 2-digit number in the string. (gh pr #32, issue #31)
- Fix and add test for Python 2.x compatibility with boolean checking of
  relativedelta objects. Implemented by @nimasmi (gh pr #43) and Cédric Krier
  (lp: 1035038)
- Replaced parse() calls with explicit datetime objects in unit tests unrelated
  to parser. (gh pr #36)
- Changed private _byxxx from sets to sorted tuples and fixed one currently
  unreachable bug in _construct_byset. (gh pr #54)
- Additional documentation for parser (gh pr #29, #33, #41) and rrule.
- Formatting fixes to documentation of rrule and README.rst.
- Updated zoneinfo to 2015a.
jperkin pushed a commit that referenced this pull request Sep 1, 2016
Fix issue #53 / Correct fix for issue #49
par2creator: use proper buffer size for volume file name generation
bump 0.6.13
Merge pull request #51 from jcfp/master
Update commandline.cpp
add -N / -S options to manpage
Add test19
Fix issue #50 (scan failure) / Correct fix for issue #31 (slow scan)
Fixes to enable "make distcheck" to work:
Fix for #49 (Scanning extra files messes up verification)
create test for #49
Merge pull request #48 from jcfp/patch-1
add missing argument for the block-count option
jperkin pushed a commit that referenced this pull request Feb 1, 2017
- Added http\Client\Curl\User interface for userland event loops
- Added http\Url::IGNORE_ERRORS, http\Url::SILENT_ERRORS and
  http\Url::STDFLAGS
- Added http\Client::setDebug(callable $debug)
- Added http\Client\Curl\FEATURES constants and namespace
- Added http\Client\Curl\VERSIONS constants and namespace
- Added share_cookies and share_ssl (libcurl >= 7.23.0) options to
  http\Client::configure()
- http\Client uses curl_share handles to properly share cookies and
  SSL/TLS sessions between requests
- Improved configure checks for default CA bundles
- Improved negotiation precision
- Fixed regression introduced by http\Params::PARSE_RFC5987:
  negotiation using the params parser would receive param keys without
  the trailing asterisk, stripped by http\Params::PARSE_RFC5987.
- Fix gh-issue #50: http\Client::dequeue() within
  http\Client::setDebug() causes segfault
- Fix gh-issue #47: http\Url: Null pointer deref in sanitize_value()
- Fix gh-issue #45: HTTP/2 response message parsing broken with
  libcurl >= 7.49.1
- Fix gh-issue #43: Joining query with empty original variable in
  query
- Fix gh-issue #42: fatal error when using punycode in URLs
- Fix gh-issue #41: Use curl_version_info_data.features when
  initializing options
- Fix gh-issue #40: determinde the SSL backend used by curl at runtime
- Fix gh-issue #39: Notice: http\Client::enqueue(): Could not set
  option proxy_service_name
- Fix gh-issue #38: Persistent curl handles: error code not properly
  reset
- Fix gh-issue #36: Unexpected cookies sent if persistent_handle_id is
  used
- Fix gh-issue #34: allow setting multiple headers with the same name
- Fix gh-issue #33: allow setting prodyhost request option to NULL
- Fix gh-issue #31: add/improve configure checks for default CA
  bundle/path

Changes from beta1:
- Fixed PHP-5.3 compatibility
- Fixed recursive calls to the event loop dispatcher

Changes from beta2:
- Fix bug #73055: crash in http\QueryString (CVE-2016-7398)
- Fix bug #73185: Buffer overflow in HTTP parse_hostinfo()
  (CVE-2016-7961)
- Fix HTTP/2 version parser for older libcurl versions
jperkin pushed a commit that referenced this pull request Apr 18, 2017
v1.2.3							2017/3/25

* Reduce the number of String objects allocated when loading zoneinfo
  files. #54.
* Make Timezone#friendly_identifier compatible with frozen string literals.
* Improve the algorithm for deriving the utc_offset from zoneinfo files. This
  now correctly handles Pacific/Apia switching from one side of the
  International Date Line to the other whilst observing daylight savings
  time. #66.
* Fix an UnknownTimezone exception when calling transitions_up_to or
  offsets_up_to on a TimezoneProxy instance obtained from Timezone.get_proxy.
* Allow the Factory zone to be obtained from the Zoneinfo data source.
* Ignore the /usr/share/zoneinfo/timeconfig symlink included in Slackware
  distributions. #64.
* Fix Timezone#strftime handling of %Z expansion when %Z is prefixed with more
  than one percent. #31.
* Support expansion of %z, %:z, %::z and %:::z to the UTC offset of the time
  zone in Timezone#strftime. #31 and #67.
jperkin pushed a commit that referenced this pull request May 13, 2017
Reviewed by:	joerg@

Upstream changes:
Release Notes for fish 2.5.0 (released February 3, 2017)

    The Home, End, Insert, Delete, Page Up and Page Down keys work in Vi-style key bindings (#3731).

Platform Changes
Starting with version 2.5, fish requires a more up-to-date version of C++, specifically C++11 (from 2011). This affects some older platforms:
Linux
For users building from source, GCC's g++ 4.8 or later, or LLVM's clang 3.3 or later, are known to work. Older platforms may require a newer compiler installed. Unfortunately, because of the complexity of the toolchain, binary packages are no longer published by the fish-shell developers for the following platforms:

    Red Hat Enterprise Linux and CentOS 5 & 6 for 64-bit builds
    Ubuntu 12.04 (EoLTS April 2017)
    Debian 7 (EoLTS May 2018)

Installing newer version of fish on these systems will require building from source.
OS X SnowLeopard
Starting with version 2.5, fish requires a C++11 standard library on OS X 10.6 ("SnowLeopard"). If this library is not installed, you will see this error: dyld: Library not loaded: /usr/lib/libc++.1.dylib MacPorts is the easiest way to obtain this library. After installing the SnowLeopard MacPorts release from the install page, run: sudo port -v install libcxx Now fish should launch successfully. (Please open an issue if it does not.) This is only necessary on 10.6. OS X 10.7 and later include the required library by default.
Other significant changes

    Attempting to exit with running processes in the background produces a warning, then signals them to terminate if a second attempt to exit is made. This brings the behaviour for running background processes into line with stopped processes. (#3497)
    random can now have start, stop and step values specified, or the new choice subcommand can be used to pick an argument from a list (#3619).
    A new key bindings preset, fish_hybrid_key_bindings, including all the Emacs-style and Vi-style bindings, which behaves like fish_vi_key_bindings in fish 2.3.0 (#3556).
    function now returns an error when called with invalid options, rather than defining the function anyway (#3574). This was a regression present in fish 2.3 and 2.4.0.
    fish no longer prints a warning when it identifies a running instance of an old version (2.1.0 and earlier). Changes to universal variables may not propagate between these old versions and 2.5b1.
    Improved compatiblity with Android (#3585), MSYS/mingw (#2360), Solaris (#3456, #3340)
    Like other shells, the test builting now returns an error for numeric operations on invalid integers (#3346, #3581).
    complete no longer recognises --authoritative and --unauthoritative options, and they are marked as obsolete.
    status accepts subcommands, and should be used like status is-interactive. The old options continue to be supported for the foreseeable future (#3526), although only one subcommand or option can be specified at a time.
    Selection mode (used with "begin-selection") no longer selects a character the cursor does not move over (#3684).
    List indexes are handled better, and a bit more liberally in some cases (echo $PATH[1 .. 3] is now valid) (#3579).
    The fish_mode_prompt function is now simply a stub around fish_default_mode_prompt, which allows the mode prompt to be included more easily in customised prompt functions (#3641).

Notable fixes and improvements

    alias, run without options or arguments, lists all defined aliases, and aliases now include a description in the function signature that identifies them.
    complete accepts empty strings as descriptions (#3557).
    command accepts -q/--quiet in combination with --search (#3591), providing a simple way of checking whether a command exists in scripts.
    Abbreviations can now be renamed with abbr --rename OLD_KEY NEW_KEY (#3610).
    The command synopses printed by --help options work better with copying and pasting (#2673).
    help launches the browser specified by the $fish_help_browser variable if it is set (#3131).
    History merging could lose items under certain circumstances and is now fixed (#3496).
    The $status variable is now set to 123 when a syntactically invalid command is entered (#3616).
    Exiting fish now signals all background processes to terminate, not just stopped jobs (#3497).
    A new prompt_hostname function which prints a hostname suitable for use in prompts (#3482).
    The __fish_man_page function (bound to Alt-h by default) now tries to recognize subcommands (e.g. git add will now open the "git-add" man page) (#3678).
    A new function edit_command_buffer (bound to Alt-e & Alt-v by default) to edit the command buffer in an external editor (#1215, #3627).
    set_color now supports italics (--italics), dim (--dim) and reverse (--reverse) modes (#3650).
    Filesystems with very slow locking (eg incorrectly-configured NFS) will no longer slow fish down (#685).
    Improved completions for apt (#3695), fusermount (#3642), make (#3628), netctl-auto (#3378), nmcli (#3648), pygmentize (#3378), and tar (#3719).
    Added completions for:
    VBoxHeadless (#3378)
    VBoxSDL (#3378)
    base64 (#3378)
    caffeinate (#3524)
    dconf (#3638)
    dig (#3495)
    dpkg-reconfigure (#3521 & #3522)
    feh (#3378)
    launchctl (#3682)
    lxc (#3554 & #3564),
    mddiagnose (#3524)
    mdfind (#3524)
    mdimport (#3524)
    mdls (#3524)
    mdutil (#3524)
    mkvextract (#3492)
    nvram (#3524)
    objdump (#3378)
    sysbench (#3491)
    tmutil (#3524)

Release Notes for fish 2.4.0 (released November 8, 2016)
Significant changes

    The clipboard integration has been revamped with explicit bindings. The killring commands no longer copy from, or paste to, the X11 clipboard - use the new copy (C-x) and paste (C-v) bindings instead. The clipboard is now available on OS X as well as systems using X11 (e.g. Linux). (#3061)
    history uses subcommands (history delete) rather than options (history --delete) for its actions (#3367). You can no longer specify multiple actions via flags (e.g., history --delete --save something).
    New history options have been added, including --max=n to limit the number of history entries, --show-time option to show timestamps (#3175, #3244), and --null to null terminate history entries in the search output.
    history search is now case-insensitive by default (which also affects history delete) (#3236).
    history delete now correctly handles multiline commands (#31).
    Vi-style bindings no longer include all of the default emacs-style bindings; instead, they share some definitions (#3068).
    If there is no locale set in the environment, various known system configuration files will be checked for a default. If no locale can be found, en_US-UTF.8 will be used (#277).
    A number followed by a caret (e.g. 5^) is no longer treated as a redirection (#1873).
    The $version special variable can be overwritten, so that it can be used for other purposes if required.

Notable fixes and improvements

    The fish_realpath builtin has been renamed to realpath and made compatible with GNU realpath when run without arguments (#3400). It is used only for systems without a realpath or grealpath utility (#3374).
    Improved color handling on terminals/consoles with 8-16 colors, particularly the use of bright named color (#3176, #3260).
    fish_indent can now read from files given as arguments, rather than just standard input (#3037).
    Fuzzy tab completions behave in a less surprising manner (#3090, #3211).
    jobs should only print its header line once (#3127).
    Wildcards in redirections are highlighted appropriately (#2789).
    Suggestions will be offered more often, like after removing characters (#3069).
    history --merge now correctly interleaves items in chronological order (#2312).
    Options for fish_indent have been aligned with the other binaries - in particular, -d now means --debug. The --dump option has been renamed to --dump-parse-tree (#3191).
    The display of bindings in the Web-based configuration has been greatly improved (#3325), as has the rendering of prompts (#2924).
    fish should no longer hang using 100% CPU in the C locale (#3214).
    A bug in FreeBSD 11 & 12, Dragonfly BSD & illumos prevented fish from working correctly on these platforms under UTF-8 locales; fish now avoids the buggy behaviour (#3050).
    Prompts which show git repository information (via __fish_git_prompt) are faster in large repositories (#3294) and slow filesystems (#3083).
    fish 2.3.0 reintroduced a problem where the greeting was printed even when using read; this has been corrected again (#3261).
    Vi mode changes the cursor depending on the current mode (#3215).
    Command lines with escaped space characters at the end tab-complete correctly (#2447).
    Added completions for:
        arcanist (#3256)
        connmanctl (#3419)
        figlet (#3378)
        mdbook (#3378)
        ninja (#3415)
        p4, the Perforce client (#3314)
        pygmentize (#3378)
        ranger (#3378)
    Improved completions for aura (#3297), abbr (#3267), brew (#3309), chown (#3380, #3383),cygport (#3392), git (#3274, #3226, #3225, #3094, #3087, #3035, #3021, #2982, #3230), kill & pkill (#3200), screen (#3271), wget (#3470), and xz (#3378).
    Distributors, packagers and developers will notice that the build process produces more succinct output by default; use make V=1 to get verbose output (#3248).
    Improved compatibility with minor platforms including musl (#2988), Cygwin (#2993), Android (#3441, #3442), Haiku (#3322) and Solaris.
    Automatic cursor changes are now only enabled on the subset of XTerm versions known to support them, resolving a problem where older versions printed garbage to the terminal before and after every prompt (#3499).
    Improved the title set in Apple Terminal.app.
    Added completions for defaults and improved completions for diskutil (#3478).

Release Notes for fish 2.3.1 (released July 3, 2016)
This is a functionality and bugfix release. This release does not contain all the changes to fish since the last release, but fixes a number of issues directly affecting users at present and includes a small number of new features.
Significant changes

    A new fish_key_reader binary for decoding interactive keypresses (#2991).
    fish_mode_prompt has been updated to reflect the changes in the way the Vi input mode is set up (#3067), making this more reliable.
    fish_config can now properly be launched from the OS X app bundle (#3140).

Notable fixes and improvements

    Extra lines were sometimes inserted into the output under Windows (Cygwin and Microsoft Windows Subsystem for Linux) due to TTY timestamps not being updated (#2859).
    The string builtin's match mode now handles the combination of -rnv (match, invert and count) correctly (#3098).
    Improvements to TTY special character handling (#3064), locale handling (#3124) and terminal environment variable handling (#3060).
    Work towards handling the terminal modes for external commands launched from initialisation files (#2980).
    Ease the upgrade path from fish 2.2.0 and before by warning users to restart fish if the string builtin is not available (#3057).
    type -a now syntax-colorizes function source output.
    Added completions for alsamixer, godoc, gofmt, goimports, gorename, lscpu, mkdir, modinfo, netctl-auto, poweroff, termite, udisksctl and xz (#3123).
    Improved completions for apt (#3097), aura (#3102),git (#3114), npm (#3158), string and suspend (#3154).

Release Notes for fish 2.3.0 (released May 20, 2016)
Significant Changes

    A new string builtin to handle… strings! This builtin will measure, split, search and replace text strings, including using regular expressions. It can also be used to turn lists into plain strings using join. string can be used in place of sed, grep, tr, cut, and awk in many situations. (#2296)
    After seeing an escape character wait up to 300ms for an additional character. This is consistent with readline (e.g. bash) and can be configured via the fish_escape_delay_ms variable. This allows using escape as the Meta modifier. (#1356)
    Add new directories for vendor functions and configuration snippets (#2498)
    A new fish_realpath builtin and associated function to allow the use of realpath even on those platforms that don't ship an appropriate command. (#2932)
    Alt-# toggles the current command line between commented and uncommented states, making it easy to save a command in history without executing it.
    The fish_vi_mode function is now deprecated in favour of fish_vi_key_bindings

Backward-incompatible changes

    Unmatched globs will now cause an error, except when used with for, set or count (#2719, #2394)
    and and or will now bind to the closest if or while, allowing compound conditions without begin and end (#1428)
    set -ql now searches up to function scope for variables (#2502)
    status -f will now behave the same when run as the main script or using source (#2643)
    source no longer puts the file name in $argv if no arguments are given (#139)

Other Notable Fixes and Improvements

    Fish no longer silences errors in config.fish (#2702)
    Move the history file to $XDG_DATA_HOME/fish (or ~/.local/share if it has not been set)
    Directory autosuggestions will now descend as far as possible if there is only one child directory (#2531)
    Add support for bright colors (#1464)
    Allow Ctrl-J (\cj) to be bound separately from Ctrl-M (\cm) (#217)
    psub now has a "-s"/"-suffix" option to name the temporary file with that suffix
    Enable 24-bit colors on select terminals (#2495)
    Support for SVN status in the prompt (#2582)
    Mercurial and SVN support have been added to the Classic + Git (now Classic + VCS) prompt (via the new __fish_vcs_prompt function) (#2592)
    export now handles variables with a "=" in the value (#2403)
    Avoid confusing the terminal line driver with non-printing characters in fish_title(#2453)
    New completions for:
        alsactl
        Archlinux’s asp, makepkg
        Atom’s apm (#2390)
        entr - the "Event Notify Test Runner" (#2265)
        Fedora’s dnf (#2638)
        OSX diskutil (#2738)
        pkgng (#2395)
        pulseaudio’s pacmd and pactl
        rmmod (#3007)
        rust’s rustc and cargo (#2409)
        sysctl (#2214)
        systemd’s machinectl (#2158), busctl (#2144), systemd-nspawn, systemd-analyze, localectl, timedatectl
        and more
    Fish no longer has a function called sgrep, freeing it for user customization (#2245)
    A rewrite of the completions for cd, fixing a few bugs (#2299, #2300, #562)
    Linux VTs now run in a simplified mode to avoid issues (#2311)
    The vi-bindings now inherit from the emacs bindings
    Fish will also execute fish_user_key_bindings when in vi-mode
    funced will now also check $VISUAL (#2268)
    A new suspend function (#2269)
    Subcommand completion now works better with split /usr (#2141)
    The command-not-found-handler can now be overridden by defining a function called __fish_command_not_found_handler in config.fish (#2331)
    A few fixes to the Sorin theme
    PWD shortening in the prompt can now be configured via the fish_prompt_pwd_dir_length variable, set to the length per path component (#2473)
    fish now ships a skeleton file for /etc/fish/config.fish that only contains some documentation, the included code has been moved to the corresponding file in /usr (#2799)

Release Notes for fish 2.2.0 (released July 12, 2015)
Significant Changes

    Abbreviations: the new `abbr` command allows for interactively-expanded abbreviations, allowing quick access to frequently-used commands (#731).
    Vi mode: run `fish_vi_mode` to switch fish into the key bindings and prompt familiar to users of the Vi editor (#65).
    New inline and interactive pager, which will be familiar to users of zsh (#291).
    Underlying architectural changes: the `fishd` universal variable server has been removed as it was a source of many bugs and security problems. Notably, old fish sessions will not be able to communicate universal variable changes with new fish sessions. For best results, restart all running instances of `fish`.
    The web-based configuration tool has been redesigned, featuring a prompt theme chooser and other improvements.
    New German, Brazilian Portuguese, and Chinese translations.

Backward-incompatible changes
These are kept to a minimum, but either change undocumented features or are too hard to use in their existing forms. These changes may break existing scripts.

    `commandline` no longer interprets functions "in reverse", instead behaving as expected (#1567).
    The previously-undocumented `CMD_DURATION` variable is now set for all commands and contains the execution time of the last command in milliseconds (#1585). It is no longer exported to other commands (#1896).
    `if` / `else` conditional statements now return values consistent with the Single Unix Specification, like other shells (#1443).
    A new "top-level" local scope has been added, allowing local variables declared on the commandline to be visible to subsequent commands. (#206)

Other notable fixes and improvements

    New documentation design (#1662), which requires a Doxygen version 1.8.7 or newer to build.
    Fish now defines a default directory for other packages to provide completions. By default this is `/usr/share/fish/vendor-completions.d`; on systems with `pkgconfig` installed this path is discoverable with `pkg-config --variable completionsdir fish`.
    A new parser removes many bugs; all existing syntax should keep working.
    New `fish_preexec` and `fish_postexec` events are fired before and after job execution respectively (#1549).
    Unmatched wildcards no longer prevent a job from running. Wildcards used interactively will still print an error, but the job will proceed and the wildcard will expand to zero arguments (#1482).
    The `.` command is deprecated and the `source` command is preferred (#310).
    `bind` supports "bind modes", which allows bindings to be set for a particular named mode, to support the implementation of Vi mode.
    A new `export` alias, which behaves like other shells (#1833).
    `command` has a new `--search` option to print the name of the disk file that would be executed, like other shells' `command -v` (#1540).
    `commandline` has a new `--paging-mode` option to support the new pager.
    `complete` has a new `--wraps` option, which allows a command to (recursively) inherit the completions of a wrapped command (#393), and `complete -e` now correctly erases completions (#380).
    Completions are now generated from manual pages by default on the first run of fish (#997).
    `fish_indent` can now produce colorized (`--ansi`) and HTML (`--html`) output (#1827).
    `functions --erase` now prevents autoloaded functions from being reloaded in the current session.
    `history` has a new `--merge` option, to incorporate history from other sessions into the current session (#825).
    `jobs` returns 1 if there are no active jobs (#1484).
    `read` has several new options:
        `--array` to break input into an array (#1540)
        `--null` to break lines on NUL characters rather than newlines (#1694)
        `--nchars` to read a specific number of characters (#1616)
        `--right-prompt` to display a right-hand-side prompt during interactive read (#1698).
    `type` has a new `-q` option to suppress output (#1540 and, like other shells, `type -a` now prints all matches for a command (#261).
    Pressing F1 now shows the manual page for the current command (#1063).
    `fish_title` functions have access to the arguments of the currently running argument as `$argv[1]` (#1542).
    The OS command-not-found handler is used on Arch Linux (#1925), nixOS (#1852), openSUSE and Fedora (#1280).
    `Alt`+`.` searches backwards in the token history, mapping to the same behavior as inserting the last argument of the previous command, like other shells (#89).
    The `SHLVL` environment variable is incremented correctly (#1634 & #1693).
    Added completions for `adb` (#1165 & #1211), `apt` (#2018), `aura` (#1292), `composer` (#1607), `cygport` (#1841), `dropbox` (#1533), `elixir` (#1167), `fossil`, `heroku` (#1790), `iex` (#1167), `kitchen` (#2000), `nix` (#1167), `node`/`npm` (#1566), `opam` (#1615), `setfacl` (#1752), `tmuxinator` (#1863), and `yast2` (#1739).
    Improved completions for `brew` (#1090 & #1810), `bundler` (#1779), `cd` (#1135), `emerge` (#1840),`git` (#1680, #1834 & #1951), `man` (#960), `modprobe` (#1124), `pacman` (#1292), `rpm` (#1236), `rsync` (#1872), `scp` (#1145), `ssh` (#1234), `sshfs` (#1268), `systemctl` (#1462, #1950 & #1972), `tmux` (#1853), `vagrant` (#1748), `yum` (#1269), and `zypper` (#1787).
wiedi pushed a commit to wiedi/pkgsrc-legacy that referenced this pull request Jan 28, 2018
Changelog:
 Fix hiragana to katakana conversion in abbrev mode [TritonDataCenter#41]
 Make "commit-unhandled" actually commit in abbrev mode [TritonDataCenter#39]
 Avoid redundant dictionary lookup in non-numeric conversion cases [TritonDataCenter#36]
 Fix KZIK rules [TritonDataCenter#35, TritonDataCenter#37]
 Fix okuri-ari word registration [TritonDataCenter#33, TritonDataCenter#34]
 Add command for sticky-shift [TritonDataCenter#32]
 Don't crash when a rule has no default metadata [TritonDataCenter#31]
 Bind C-j to go back to hiragana in AZIK latin [TritonDataCenter#30]
 Build fixes [TritonDataCenter#42, TritonDataCenter#43]
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