-
Notifications
You must be signed in to change notification settings - Fork 64
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
2014Q2 postgresql93-server broken #211
Comments
Some more testing (I know some of them are a bad idea but due to this bug I am rebuilding this zone with the previous base image)
Regards |
Actually a lot is broken :O same for clamav's freshclam SMF, possibly others! |
+mysql also effected |
I'm looking at it, Jorge. Sounds like a regression in placeholder substitution. We'll identify all affected packages and rebuild. |
Alright, for now I've reverted my stuff to the prev. base64. All is fine there. |
Sorry about that, rebuilds are currently in progress, and I've also added a regression test which should hopefully catch these in the future before the package is released. |
Cool, well stuff happens from time to time so don't sweat it too much. I'm just surprised it took so long for a user to catch it! |
This was fixed in yesterday's rebuilds of 2014Q2. |
Last pkgsrc was version from 2002. Changes in 2.04: Add new programming language ObjectiveâC. Add new bracket style option "style=google" (-A14). Add new option "indent-preproc-cond" (xw) to indent preprocessor conditional statements (#118). Add new bracket modify options "attach-namespaces", "attach-classes", "attach-inlines", and "attach-extern-c". Add new option "indent-modifiers" (-xG) to indent class access modifiers one-half indent (#130). Add new option "remove-brackets" (-xj) to remove brackets from single line conditional statements. Add new option "remove-comment-prefix" (-xp) to remove the leading '*' from multi-line comments. Add new option "align-method-colon" (-xM) to align ObjectiveâC method colons. Add new option "pad-method-colon=#" (-xP#) to space pad ObjectiveâC method colons. Add new options "pad-method-prefix" (-xQ), and "unpad-method-prefix" (-xR) to pad the ObjectiveâC "-" and "+" method prefix. Add new dll entry point AStyleMainUtf16 for processing C# UTF-16 strings. Add formatting of C++11 raw string literals (#222). Add "style=knf" as an alternative to "style=linux". Remove depreciated "bracket=" options. Improve recognition and formatting of pointers and references (#174 and other changes). Improve the recognition of block-opening brackets. Improve code using a static code analyzer (#195). Change "max-code-length" to include ObjectiveâC methods. Change "indent-elseifs" and "break-blocks" to look ahead only if in command-type brackets (speed improvement). Fix linux bracket styles to break the opening bracket in inline function definitions (#185). Fix indentation of switch block comments (#164). Fix enums to indent with tabs when requested (#92, #121). Fix formatting of rvalue reference without a name in a declaration (#219). Fix "pad-first-paren-out" to not pad if the following parens are empty (#232). Fix end-of-statement reset when comments follow closing bracket. Fix the ASBeautifier active and waiting stacks to delete the ASBeautifier objects before deleting the pointers. Fix ASBeautifier "init" to delete the tempStack vectors before deleting the tempStack. Fix Linux piping problem by changing "cin" input to build a stringstream before formatting. Fix to identify the correct bracket type when 'extern "C"' is part of the enum definition. Fix to clear 'extern "C"' variables when the block is closed. Fix unindented 'extern "C"' to not indent when in a #else preprocessor directive. Fix not always correctly formatting linux type brackets for enum blocks. Fix align-pointer in a range-based for statement (#217). Fix pointer-reference argument alignment to correctly position a following comment (#235). Fix to not attach a bracket to a line ending in a backslash '\' (#186, #214, #220). Fix to recognize templates using multiple lines (#85, #87, #136). Fix formatting of template continuation lines (#85, #87, #136). Fix to allow '^' as an array operator (#233). Fix an "enum" argument being mistaken for an enumeration (#211). Fix to recognize a non-instatement array after a "},{" sequence. Fix "pad-oper" to not pad before a following comma. Fix recognition of an operator when the calculation contains a bitwise "not" '~' (#166). Fix to allow a preprocessor statement within a preprocessor define (#238). Fix preprocessor comparison to check for whole words (#246). Fix "add-brackets" when a line contains more than one paren pairs (#181). Fix to allow Mac old CR line endings in the options file (#129). Refactor to aid debugging and improve design and decomposition: Move ALL preliminary indentation calculations to computePreliminaryIndentation() in ASBeautifier. Move calculation of 'force tab' indents to preLineWS() in ASBeautifier. Combine methods init() and init(ASSourceIterator*) in ASBeautifier. Extract method adjustParsedLineIndentation() in ASBeautifier. Extract method parseCurrentLine() in ASEnhancer. Remove astyle_main.cpp unused functions getFilesUnchanged, getOptionsFileRequired, and setOptionsFileRequired. Older changes included in distfile, or available on http://astyle.sourceforge.net/notes.html
Changelog: ================================================================================ GLM 0.9.5.4: 2014-06-21 -------------------------------------------------------------------------------- - Fixed non-utf8 character #196 - Added FindGLM install for CMake #189 - Fixed GTX_color_space - saturation #195 - Fixed glm::isinf and glm::isnan for with Android NDK 9d #191 - Fixed builtin GLM_ARCH_SSE4 #204 - Optimized Quaternion vector rotation #205 - Fixed missing doxygen @endcond tag #211 - Fixed instruction set detection with Clang #158 - Fixed orientate3 function #207 - Fixed lerp when cosTheta is close to 1 in quaternion slerp #210 - Added GTX_io for io with <iostream> #144 - Fixed fastDistance ambiguity #215 - Fixed tweakedInfinitePerspective #208 and added user-defined epsilon to tweakedInfinitePerspective - Fixed std::copy and std::vector with GLM types #214 - Fixed strict aliasing issues #212, #152 - Fixed std::nextafter not supported with C++11 on Android #213 - Fixed corner cases in exp and log functions for quaternions #199 ================================================================================ GLM 0.9.5.3: 2014-04-02 -------------------------------------------------------------------------------- - Added instruction set auto detection with Visual C++ using _M_IX86_FP - /arch compiler argument - Fixed GTX_raw_data code dependency - Fixed GCC instruction set detection - Added GLM_GTX_matrix_transform_2d extension (#178, #176) - Fixed CUDA issues (#169, #168, #183, #182) - Added support for all extensions but GTX_string_cast to CUDA - Fixed strict aliasing warnings in GCC 4.8.1 / Android NDK 9c (#152) - Fixed missing bitfieldInterleave definisions - Fixed usubBorrow (#171) - Fixed eulerAngle*** not consistent for right-handed coordinate system (#173) - Added full tests for eulerAngle*** functions (#173) - Added workaround for a CUDA compiler bug (#186, #185) ================================================================================ GLM 0.9.5.2: 2014-02-08 -------------------------------------------------------------------------------- - Fixed initializer list ambiguity (#159, #160) - Fixed warnings with the Android NDK 9c - Fixed non power of two matrix products - Fixed mix function link error - Fixed SSE code included in GLM tests on "pure" platforms - Fixed undefined reference to fastInverseSqrt (#161) - Fixed GLM_FORCE_RADIANS with <glm/ext.hpp> build error (#165) - Fix dot product clamp range for vector angle functions. (#163) - Tentative fix for strict aliasing warning in GCC 4.8.1 / Android NDK 9c (#152) - Fixed GLM_GTC_constants description brief (#162) ================================================================================ GLM 0.9.5.1: 2014-01-11 -------------------------------------------------------------------------------- - Fixed angle and orientedAngle that sometimes return NaN values (#145) - Deprecated degrees for function parameters and display a message - Added possible static_cast conversion of GLM types (#72) - Fixed error 'inverse' is not a member of 'glm' from glm::unProject (#146) - Fixed mismatch between some declarations and definitions - Fixed inverse link error when using namespace glm; (#147) - Optimized matrix inverse and division code (#149) - Added intersectRayPlane function (#153) - Fixed outerProduct return type (#155) ================================================================================ GLM 0.9.5.0: 2013-12-25 -------------------------------------------------------------------------------- - Added forward declarations (glm/fwd.hpp) for faster compilations - Added per feature headers - Minimized GLM internal dependencies - Improved Intel Compiler detection - Added bitfieldInterleave and _mm_bit_interleave_si128 functions - Added GTX_scalar_relational - Added GTX_dual_quaternion - Added rotation function to GTX_quaternion (#22) - Added precision variation of each type - Added quaternion comparison functions - Fixed GTX_multiple for negative value - Removed GTX_ocl_type extension - Fixed post increment and decrement operators - Fixed perspective with zNear == 0 (#71) - Removed l-value swizzle operators - Cleaned up compiler detection code for unsupported compilers - Replaced C cast by C++ casts - Fixed .length() that should return a int and not a size_t - Added GLM_FORCE_SIZE_T_LENGTH and glm::length_t - Removed unnecessary conversions - Optimized packing and unpacking functions - Removed the normalization of the up argument of lookAt function (#114) - Added low precision specializations of inversesqrt - Fixed ldexp and frexp implementations - Increased assert coverage - Increased static_assert coverage - Replaced GLM traits by STL traits when possible - Allowed including individual core feature - Increased unit tests completness - Added creating of a quaternion from two vectors - Added C++11 initializer lists - Fixed umulExtended and imulExtended implementations for vector types (#76) - Fixed CUDA coverage for GTC extensions - Added GTX_io extension - Improved GLM messages enabled when defining GLM_MESSAGES - Hidden matrix _inverse function implementation detail into private section ================================================================================ GLM 0.9.4.6: 2013-09-20 -------------------------------------------------------------------------------- - Fixed detection to select the last known compiler if newer version #106 - Fixed is_int and is_uint code duplication with GCC and C++11 #107 - Fixed test suite build while using Clang in C++11 mode - Added c++1y mode support in CMake test suite - Removed ms extension mode to CMake when no using Visual C++ - Added pedantic mode to CMake test suite for Clang and GCC - Added use of GCC frontend on Unix for ICC and Visual C++ fronted on Windows for ICC - Added compilation errors for unsupported compiler versions - Fixed glm::orientation with GLM_FORCE_RADIANS defined #112 - Fixed const ref issue on assignment operator taking a scalar parameter #116 - Fixed glm::eulerAngleY implementation #117 ================================================================================ GLM 0.9.4.5: 2013-08-12 -------------------------------------------------------------------------------- - Fixed CUDA support - Fixed inclusion of intrinsics in "pure" mode #92 - Fixed language detection on GCC when the C++0x mode isn't enabled #95 - Fixed issue #97: register is deprecated in C++11 - Fixed issue #96: CUDA issues - Added Windows CE detection #92 - Added missing value_ptr for quaternions #99 ================================================================================ GLM 0.9.4.4: 2013-05-29 -------------------------------------------------------------------------------- - Fixed slerp when costheta is close to 1 #65 - Fixed mat4x2 value_type constructor #70 - Fixed glm.natvis for Visual C++ 12 #82 - Added assert in inversesqrt to detect division by zero #61 - Fixed missing swizzle operators #86 - Fixed CUDA warnings #86 - Fixed GLM natvis for VC11 #82 - Fixed GLM_GTX_multiple with negative values #79 - Fixed glm::perspective when zNear is zero #71 ================================================================================ GLM 0.9.4.3: 2013-03-20 -------------------------------------------------------------------------------- - Detected qualifier for Clang - Fixed C++11 mode for GCC, couldn't be enabled without MS extensions - Fixed squad, intermediate and exp quaternion functions - Fixed GTX_polar_coordinates euclidean function, takes a vec2 instead of a vec3 - Clarify the license applying on the manual - Added a docx copy of the manual - Fixed GLM_GTX_matrix_interpolation - Fixed isnan and isinf on Android with Clang - Autodetected C++ version using __cplusplus value - Fixed mix for bool and bvec* third parameter ================================================================================ GLM 0.9.4.2: 2013-02-14 -------------------------------------------------------------------------------- - Fixed compAdd from GTX_component_wise - Fixed SIMD support for Intel compiler on Windows - Fixed isnan and isinf for CUDA compiler - Fixed GLM_FORCE_RADIANS on glm::perspective - Fixed GCC warnings - Fixed packDouble2x32 on XCode - Fixed mix for vec4 SSE implementation - Fixed 0x2013 dash character in comments that cause issue in Windows Japanese mode - Fixed documentation warnings - Fixed CUDA warnings ================================================================================ GLM 0.9.4.1: 2012-12-22 -------------------------------------------------------------------------------- - Improved half support: -0.0 case and implicit conversions - Fixed Intel Composer Compiler support on Linux - Fixed interaction between quaternion and euler angles - Fixed GTC_constants build - Fixed GTX_multiple - Fixed quat slerp using mix function when cosTheta close to 1 - Improved fvec4SIMD and fmat4x4SIMD implementations - Fixed assert messages - Added slerp and lerp quaternion functions and tests ================================================================================ GLM 0.9.4.0: 2012-11-18 -------------------------------------------------------------------------------- - Added Intel Composer Compiler support - Promoted GTC_espilon extension - Promoted GTC_ulp extension - Removed GLM website from the source repository - Added GLM_FORCE_RADIANS so that all functions takes radians for arguments - Fixed detection of Clang and LLVM GCC on MacOS X - Added debugger visualizers for Visual C++ 2012 ================================================================================ GLM 0.9.3.4: 2012-06-30 -------------------------------------------------------------------------------- - Added SSE4 and AVX2 detection. - Removed VIRTREV_xstream and the incompatibility generated with GCC - Fixed C++11 compiler option for GCC - Removed MS language extension option for GCC (not fonctionnal) - Fixed bitfieldExtract for vector types - Fixed warnings - Fixed SSE includes ================================================================================ GLM 0.9.3.3: 2012-05-10 -------------------------------------------------------------------------------- - Fixed isinf and isnan - Improved compatibility with Intel compiler - Added CMake test build options: SIMD, C++11, fast math and MS land ext - Fixed SIMD mat4 test on GCC - Fixed perspectiveFov implementation - Fixed matrixCompMult for none-square matrices - Fixed namespace issue on stream operators - Fixed various warnings - Added VC11 support
Version 2.0 ----------- (released Nov 9, 2014) - Default lexer encoding is now "guess", i.e. UTF-8 / Locale / Latin1 is tried in that order. - Major update to Swift lexer (pull request #410). - Multiple fixes to lexer guessing in conflicting cases: * recognize HTML5 by doctype * recognize XML by XML declaration * don't recognize C/C++ as SystemVerilog - Simplified regexes and builtin lists. Version 2.0rc1 -------------- (released Oct 16, 2014) - Dropped Python 2.4 and 2.5 compatibility. This is in favor of single-source compatibility between Python 2.6, 2.7 and 3.3+. - New website and documentation based on Sphinx (finally!) - Lexers added: * APL (#969) * Agda and Literate Agda (pull request #203) * Alloy (pull request #355) * AmbientTalk * BlitzBasic (pull request #197) * ChaiScript (pull request #24) * Chapel (pull request #256) * Cirru (pull request #275) * Clay (pull request #184) * ColdFusion CFC (pull request #283) * Cryptol and Literate Cryptol (pull request #344) * Cypher (pull request #257) * Docker config files * EBNF (pull request #193) * Eiffel (pull request #273) * GAP (pull request #311) * Golo (pull request #309) * Handlebars (pull request #186) * Hy (pull request #238) * Idris and Literate Idris (pull request #210) * Igor Pro (pull request #172) * Inform 6/7 (pull request #281) * Intel objdump (pull request #279) * Isabelle (pull request #386) * Jasmin (pull request #349) * JSON-LD (pull request #289) * Kal (pull request #233) * Lean (pull request #399) * LSL (pull request #296) * Limbo (pull request #291) * Liquid (#977) * MQL (pull request #285) * MaskJS (pull request #280) * Mozilla preprocessors * Mathematica (pull request #245) * NesC (pull request #166) * Nit (pull request #375) * Nix (pull request #267) * Pan * Pawn (pull request #211) * Perl 6 (pull request #181) * Pig (pull request #304) * Pike (pull request #237) * QBasic (pull request #182) * Red (pull request #341) * ResourceBundle (#1038) * Rexx (pull request #199) * Rql (pull request #251) * Rsl * SPARQL (pull request #78) * Slim (pull request #366) * Swift (pull request #371) * Swig (pull request #168) * TADS 3 (pull request #407) * Todo.txt todo lists * Twig (pull request #404) - Added a helper to "optimize" regular expressions that match one of many literal words; this can save 20% and more lexing time with lexers that highlight many keywords or builtins. - New styles: "xcode" and "igor", similar to the default highlighting of the respective IDEs. - The command-line "pygmentize" tool now tries a little harder to find the correct encoding for files and the terminal (#979). - Added "inencoding" option for lexers to override "encoding" analogous to "outencoding" (#800). - Added line-by-line "streaming" mode for pygmentize with the "-s" option. (pull request #165) Only fully works for lexers that have no constructs spanning lines! - Added an "envname" option to the LaTeX formatter to select a replacement verbatim environment (pull request #235). - Updated the Makefile lexer to yield a little more useful highlighting. - Lexer aliases passed to ``get_lexer_by_name()`` are now case-insensitive. - File name matching in lexers and formatters will now use a regex cache for speed (pull request #205). - Pygments will now recognize "vim" modelines when guessing the lexer for a file based on content (pull request #118). - Major restructure of the ``pygments.lexers`` module namespace. There are now many more modules with less lexers per module. Old modules are still around and re-export the lexers they previously contained. - The NameHighlightFilter now works with any Name.* token type (#790). - Python 3 lexer: add new exceptions from PEP 3151. - Opa lexer: add new keywords (pull request #170). - Julia lexer: add keywords and underscore-separated number literals (pull request #176). - Lasso lexer: fix method highlighting, update builtins. Fix guessing so that plain XML isn't always taken as Lasso (pull request #163). - Objective C/C++ lexers: allow "@" prefixing any expression (#871). - Ruby lexer: fix lexing of Name::Space tokens (#860) and of symbols in hashes (#873). - Stan lexer: update for version 2.4.0 of the language (pull request #162, PR#255, PR#377). - JavaScript lexer: add the "yield" keyword (pull request #196). - HTTP lexer: support for PATCH method (pull request #190). - Koka lexer: update to newest language spec (pull request #201). - Haxe lexer: rewrite and support for Haxe 3 (pull request #174). - Prolog lexer: add different kinds of numeric literals (#864). - F# lexer: rewrite with newest spec for F# 3.0 (#842), fix a bug with dotted chains (#948). - Kotlin lexer: general update (pull request #271). - Rebol lexer: fix comment detection and analyse_text (pull request #261). - LLVM lexer: update keywords to v3.4 (pull request #258). - PHP lexer: add new keywords and binary literals (pull request #222). - external/markdown-processor.py updated to newest python-markdown (pull request #221). - CSS lexer: some highlighting order fixes (pull request #231). - Ceylon lexer: fix parsing of nested multiline comments (#915). - C family lexers: fix parsing of indented preprocessor directives (#944). - Rust lexer: update to 0.9 language version (pull request #270, PR#388). - Elixir lexer: update to 0.15 language version (pull request #392). - Fix swallowing incomplete tracebacks in Python console lexer (#874).
0.10.1 2015-03-25 BUG FIXES * Return `ApplyDeltaError` when encountering delta errors in both C extensions and native delta application code. (Jelmer Vernooij, #259) 0.10.0 2015-03-22 BUG FIXES * In dulwich.index.build_index_from_tree, by default refuse to create entries that start with .git/. * Fix running of testsuite when installed. (Jelmer Vernooij, #223) * Use a block cache in _find_content_rename_candidates(), improving performance. (Mike Williams) * Add support for ``core.protectNTFS`` setting. (Jelmer Vernooij) * Fix TypeError when fetching empty updates. (Hwee Miin Koh) * Resolve delta refs when pulling into a MemoryRepo. (Max Shawabkeh, #256) * Fix handling of tags of non-commits in missing object finder. (Augie Fackler, #211) * Explicitly disable mmap on plan9 where it doesn't work. (Jeff Sickel) IMPROVEMENTS * New public method `Repo.reset_index`. (Jelmer Vernooij) * Prevent duplicate parsing of loose files in objects directory when reading. Thanks to David Keijser for the report. (Jelmer Vernooij, #231) 0.9.9 2015-03-20 SECURITY BUG FIXES * Fix buffer overflow in C implementation of pack apply_delta(). (CVE-2015-0838) Thanks to Ivan Fratric of the Google Security Team for reporting this issue. (Jelmer Vernooij) 0.9.8 2014-11-30 BUG FIXES * Various fixes to improve test suite running on Windows. (Gary van der Merwe) * Limit delta copy length to 64K in v2 pack files. (Robert Brown) * Strip newline from final ACKed SHA while fetching packs. (Michael Edgar) * Remove assignment to PyList_SIZE() that was causing segfaults on pypy. (Jelmer Vernooij, #196) IMPROVEMENTS * Add porcelain 'receive-pack' and 'upload-pack'. (Jelmer Vernooij) * Handle SIGINT signals in bin/dulwich. (Jelmer Vernooij) * Add 'status' support to bin/dulwich. (Jelmer Vernooij) * Add 'branch_create', 'branch_list', 'branch_delete' porcelain. (Jelmer Vernooij) * Add 'fetch' porcelain. (Jelmer Vernooij) * Add 'tag_delete' porcelain. (Jelmer Vernooij) * Add support for serializing/deserializing 'gpgsig' attributes in Commit. (Jelmer Vernooij) CHANGES * dul-web is now available as 'dulwich web-daemon'. (Jelmer Vernooij) * dulwich.porcelain.tag has been renamed to tag_create. dulwich.porcelain.list_tags has been renamed to tag_list. (Jelmer Vernooij) API CHANGES * Restore support for Python 2.6. (Jelmer Vernooij, Gary van der Merwe) 0.9.7 2014-06-08 BUG FIXES * Fix tests dependent on hash ordering. (Michael Edgar) * Support staging symbolic links in Repo.stage. (Robert Brown) * Ensure that all files object are closed when running the test suite. (Gary van der Merwe) * When writing OFS_DELTA pack entries, write correct offset. (Augie Fackler) * Fix handler of larger copy operations in packs. (Augie Fackler) * Various fixes to improve test suite running on Windows. (Gary van der Merwe) * Fix logic for extra adds of identical files in rename detector. (Robert Brown) IMPROVEMENTS * Add porcelain 'status'. (Ryan Faulkner) * Add porcelain 'daemon'. (Jelmer Vernooij) * Add `dulwich.greenthreads` module which provides support for concurrency of some object store operations. (Fabien Boucher) * Various changes to improve compatibility with Python 3. (Gary van der Merwe, Hannu Valtonen, michael-k) * Add OpenStack Swift backed repository implementation in dulwich.contrib. See README.swift for details. (Fabien Boucher) API CHANGES * An optional close function can be passed to the Protocol class. This will be called by its close method. (Gary van der Merwe) * All classes with close methods are now context managers, so that they can be easily closed using a `with` statement. (Gary van der Merwe) * Remove deprecated `num_objects` argument to `write_pack` methods. (Jelmer Vernooij) OTHER CHANGES * The 'dul-daemon' script has been removed. The same functionality is now available as 'dulwich daemon'. (Jelmer Vernooij) 0.9.6 2014-04-23 IMPROVEMENTS * Add support for recursive add in 'git add'. (Ryan Faulkner, Jelmer Vernooij) * Add porcelain 'list_tags'. (Ryan Faulkner) * Add porcelain 'push'. (Ryan Faulkner) * Add porcelain 'pull'. (Ryan Faulkner) * Support 'http.proxy' in HttpGitClient. (Jelmer Vernooij, #1096030) * Support 'http.useragent' in HttpGitClient. (Jelmer Vernooij) * In server, wait for clients to send empty list of wants when talking to empty repository. (Damien Tournoud) * Various changes to improve compatibility with Python 3. (Gary van der Merwe) BUG FIXES * Support unseekable 'wsgi.input' streams. (Jonas Haag) * Raise TypeError when passing unicode() object to Repo.__getitem__. (Jonas Haag) * Fix handling of `reset` command in dulwich.fastexport. (Jelmer Vernooij, #1249029) * In client, don't wait for server to close connection first. Fixes hang when used against GitHub server implementation. (Siddharth Agarwal) * DeltaChainIterator: fix a corner case where an object is inflated as an object already in the repository. (Damien Tournoud, #135) * Stop leaking file handles during pack reload. (Damien Tournoud) * Avoid reopening packs during pack cache reload. (Jelmer Vernooij) API CHANGES * Drop support for Python 2.6. (Jelmer Vernooij) 0.9.5 2014-02-23 IMPROVEMENTS * Add porcelain 'tag'. (Ryan Faulkner) * New module `dulwich.objectspec` for parsing strings referencing objects and commit ranges. (Jelmer Vernooij) * Add shallow branch support. (milki) * Allow passing urllib2 `opener` into HttpGitClient. (Dov Feldstern, #909037) CHANGES * Drop support for Python 2.4 and 2.5. (Jelmer Vernooij) API CHANGES * Remove long deprecated ``Repo.commit``, ``Repo.get_blob``, ``Repo.tree`` and ``Repo.tag``. (Jelmer Vernooij) * Remove long deprecated ``Repo.revision_history`` and ``Repo.ref``. (Jelmer Vernooij) * Remove long deprecated ``Tree.entries``. (Jelmer Vernooij) BUG FIXES * Raise KeyError rather than TypeError when passing in unicode object of length 20 or 40 to Repo.__getitem__. (Jelmer Vernooij) * Use 'rm' rather than 'unlink' in tests, since the latter does not exist on OpenBSD and other platforms. (Dmitrij D. Czarkoff)
Update DEPENDS Add test target Upstream changes: 2015-03-14 -- 1.4.3 * Remove three warnings: star-args, abstract-class-little-used, abstract-class-not-used. These warnings don't add any real value and they don't imply errors or problems in the code. * Added a new option for controlling the peephole optimizer in astroid. The option ``--optimize-ast`` will control the peephole optimizer, which is used to optimize a couple of AST subtrees. The current problem solved by the peephole optimizer is when multiple joined strings, with the addition operator, are encountered. If the numbers of such strings is high enough, Pylint will then fail with a maximum recursion depth exceeded error, due to its visitor architecture. The peephole just transforms such calls, if it can, into the final resulting string and this exhibit a problem, because the visit_binop method stops being called (in the optimized AST it will be a Const node). 2015-03-11 -- 1.4.2 * Don't require a docstring for empty modules. Closes issue #261. * Fix a false positive with `too-few-format-args` string warning, emitted when the string format contained a normal positional argument ('{0}'), mixed with a positional argument which did an attribute access ('{0.__class__}'). Closes issue #463. * Take in account all the methods from the ancestors when checking for too-few-public-methods. Closes issue #471. * Catch enchant errors and emit 'invalid-characters-in-docstring' when checking for spelling errors. Closes issue #469. * Use all the inferred statements for the super-init-not-called check. Closes issue #389. * Add a new warning, 'unichr-builtin', emitted by the Python 3 porting checker, when the unichr builtin is found. Closes issue #472. * Add a new warning, 'intern-builtin', emitted by the Python 3 porting checker, when the intern builtin is found. Closes issue #473. * Add support for editable installations. * The HTML output accepts the `--msg-template` option. Patch by Dan Goldsmith. * Add 'map-builtin-not-iterating' (replacing 'implicit-map-evaluation'), 'zip-builtin-not-iterating', 'range-builtin-not-iterating', and 'filter-builtin-not-iterating' which are emitted by `--py3k` when the appropriate built-in is not used in an iterating context (semantics taken from 2to3). * Add a new warning, 'unidiomatic-typecheck', emitted when an explicit typecheck uses type() instead of isinstance(). For example, `type(x) == Y` instead of `isinstance(x, Y)`. Patch by Chris Rebert. Closes issue #299. * Add support for combining the Python 3 checker mode with the --jobs flag (--py3k and --jobs). Closes issue #467. * Add a new warning for the Python 3 porting checker, 'using-cmp-argument', emitted when the `cmp` argument for the `list.sort` or `sorted builtin` is encountered. * Make the --py3k flag commutative with the -E flag. Also, this patch fixes the leaks of error messages from the Python 3 checker when the errors mode was activated. Closes issue #437. 2015-01-16 -- 1.4.1 * Look only in the current function's scope for bad-super-call. Closes issue #403. * Check the return of properties when checking for not-callable. Closes issue #406. * Warn about using the input() or round() built-ins for Python 3. Closes issue #411. * Proper abstract method lookup while checking for abstract-class-instantiated. Closes issue #401. * Use a mro traversal for finding abstract methods. Closes issue #415. * Fix a false positive with catching-non-exception and tuples of exceptions. * Fix a false negative with raising-non-exception, when the raise used an uninferrable exception context. * Fix a false positive on Python 2 for raising-bad-type, when raising tuples in the form 'raise (ZeroDivisionError, None)'. * Fix a false positive with invalid-slots-objects, where the slot entry was an unicode string on Python 2. Closes issue #421. * Add a new warning, 'redundant-unittest-assert', emitted when using unittest's methods assertTrue and assertFalse with constant value as argument. Patch by Vlad Temian. * Add a new JSON reporter, usable through -f flag. * Add the method names for the 'signature-differs' and 'argument-differs' warnings. Closes issue #433. * Don't compile test files when installing. * Fix a crash which occurred when using multiple jobs and the files given as argument didn't exist at all. 2014-11-23 -- 1.4.0 * Added new options for controlling the loading of C extensions. By default, only C extensions from the stdlib will be loaded into the active Python interpreter for inspection, because they can run arbitrary code on import. The option `--extension-pkg-whitelist` can be used to specify modules or packages that are safe to load. * Change default max-line-length to 100 rather than 80 * Drop BaseRawChecker class which were only there for backward compat for a while now * Don't try to analyze string formatting with objects coming from function arguments. Closes issue #373. * Port source code to be Python 2/3 compatible. This drops the need for 2to3, but does drop support for Python 2.5. * Each message now comes with a confidence level attached, and can be filtered base on this level. This allows to filter out all messages that were emitted even though an inference failure happened during checking. * Improved presenting unused-import message. Closes issue #293. * Add new checker for finding spelling errors. New messages: wrong-spelling-in-comment, wrong-spelling-in-docstring. New options: spelling-dict, spelling-ignore-words. * Add new '-j' option for running checks in sub-processes. * Added new checks for line endings if they are mixed (LF vs CRLF) or if they are not as expected. New messages: mixed-line-endings, unexpected-line-ending-format. New option: expected-line-ending-format. * 'dangerous-default-value' no longer evaluates the value of the arguments, which could result in long error messages or sensitive data being leaked. Closes issue #282 * Fix a false positive with string formatting checker, when encountering a string which uses only position-based arguments. Closes issue #285. * Fix a false positive with string formatting checker, when using keyword argument packing. Closes issue #288. * Proper handle class level scope for lambdas. * Handle 'too-few-format-args' or 'too-many-format-args' for format strings with both named and positional fields. Closes issue #286. * Analyze only strings by the string format checker. Closes issue #287. * Properly handle nested format string fields. Closes issue #294. * Don't emit 'attribute-defined-outside-init' if the attribute was set by a function call in a defining method. Closes issue #192. * Properly handle unicode format strings for Python 2. Closes issue #296. * Don't emit 'import-error' if an import was protected by a try-except, which excepted ImportError. * Fix an 'unused-import' false positive, when the error was emitted for all the members imported with 'from import' form. Closes issue #304. * Don't emit 'invalid-name' when assigning a name in an ImportError handler. Closes issue #302. * Don't count branches from nested functions. * Fix a false positive with 'too-few-format-args', when the format strings contains duplicate manual position arguments. Closes issue #310. * fixme regex handles comments without spaces after the hash. Closes issue #311. * Don't emit 'unused-import' when a special object is imported (__all__, __doc__ etc.). Closes issue #309. * Look in the metaclass, if defined, for members not found in the current class. Closes issue #306. * Don't emit 'protected-access' if the attribute is accessed using a property defined at the class level. * Detect calls of the parent's __init__, through a binded super() call. * Check that a class has an explicitly defined metaclass before emitting 'old-style-class' for Python 2. * Emit 'catching-non-exception' for non-class nodes. Closes issue #303. * Order of reporting is consistent. * Add a new warning, 'boolean-datetime', emitted when an instance of 'datetime.time' is used in a boolean context. Closes issue #239. * Fix a crash which ocurred while checking for 'method-hidden', when the parent frame was something different than a function. * Generate html output for missing files. Closes issue #320. * Fix a false positive with 'too-many-format-args', when the format string contains mixed attribute access arguments and manual fields. Closes issue #322. * Extend the cases where 'undefined-variable' and 'used-before-assignment' can be detected. Closes issue #291. * Add support for customising callback identifiers, by adding a new '--callbacks' command line option. Closes issue #326. * Add a new warning, 'logging-format-interpolation', emitted when .format() string interpolation is used within logging function calls. * Don't emit 'unbalanced-tuple-unpacking' when the rhs of the assignment is a variable length argument. Closes issue #329. * Add a new warning, 'inherit-non-class', emitted when a class inherits from something which is not a class. Closes issue #331. * Fix another false positives with 'undefined-variable', where the variable can be found as a class assignment and used in a function annotation. Closes issue #342. * Handle assignment of the string format method to a variable. Closes issue #351. * Support wheel packaging format for PyPi. Closes issue #334. * Check that various built-ins that do not exist in Python 3 are not used: apply, basestring, buffer, cmp, coerce, execfile, file, long raw_input, reduce, StandardError, unicode, reload and xrange. * Warn for magic methods which are not used in any way in Python 3: __coerce__, __delslice__, __getslice__, __setslice__, __cmp__, __oct__, __nonzero__ and __hex__. * Don't emit 'assigning-non-slot' when the assignment is for a property. Closes issue #359. * Fix for regression: '{path}' was no longer accepted in '--msg-template'. * Report the percentage of all messages, not just for errors and warnings. Closes issue #319. * 'too-many-public-methods' is reported only for methods defined in a class, not in its ancestors. Closes issue #248. * 'too-many-lines' disable pragma can be located on any line, not only the first. Closes issue #321. * Warn in Python 2 when an import statement is found without a corresponding `from __future__ import absolute_import`. * Warn in Python 2 when a non-floor division operation is found without a corresponding `from __future__ import division`. * Add a new option, 'exclude-protected', for excluding members from the protected-access warning. Closes issue #48. * Warn in Python 2 when using dict.iter*(), dict.view*(); none of these methods are available in Python 3. * Warn in Python 2 when calling an object's next() method; Python 3 uses __next__() instead. * Warn when assigning to __metaclass__ at a class scope; in Python 3 a metaclass is specified as an argument to the 'class' statement. * Warn when performing parameter tuple unpacking; it is not supported in Python 3. * 'abstract-class-instantiated' is also emitted for Python 2. It was previously disabled. * Add 'long-suffix' error, emitted when encountering the long suffix on numbers. * Add support for disabling a checker, by specifying an 'enabled' attribute on the checker class. * Add a new CLI option, --py3k, for enabling Python 3 porting mode. This mode will disable all other checkers and will emit warnings and errors for constructs which are invalid or removed in Python 3. * Add 'old-octal-literal' to Python 3 porting checker, emitted when encountering octals with the old syntax. * Add 'implicit-map-evaluation' to Python 3 porting checker, emitted when encountering the use of map builtin, without explicit evaluation. 2014-07-26 -- 1.3.0 * Allow hanging continued indentation for implicitly concatenated strings. Closes issue #232. * Pylint works under Python 2.5 again, and its test suite passes. * Fix some false positives for the cellvar-from-loop warnings. Closes issue #233. * Return new astroid class nodes when the inferencer can detect that that result of a function invocation on a type (like `type` or `abc.ABCMeta`) is requested. Closes #205. * Emit 'undefined-variable' for undefined names when using the Python 3 `metaclass=` argument. * Checkers respect priority now. Close issue #229. * Fix a false positive regarding W0511. Closes issue #149. * Fix unused-import false positive with Python 3 metaclasses (#143). * Don't warn with 'bad-format-character' when encountering the 'a' format on Python 3. * Add multiple checks for PEP 3101 advanced string formatting: 'bad-format-string', 'missing-format-argument-key', 'unused-format-string-argument', 'format-combined-specification', 'missing-format-attribute' and 'invalid-format-index'. * Issue broad-except and bare-except even if the number of except handlers is different than 1. Fixes issue #113. * Issue attribute-defined-outside-init for all cases, not just for the last assignment. Closes issue #262. * Emit 'not-callable' when calling properties. Closes issue #268. * Fix a false positive with unbalanced iterable unpacking, when encountering starred nodes. Closes issue #273. * Add new checks, 'invalid-slice-index' and 'invalid-sequence-index' for invalid sequence and slice indices. * Add 'assigning-non-slot' warning, which detects assignments to attributes not defined in slots. * Don't emit 'no-name-in-module' for ignored modules. Closes issue #223. * Fix an 'unused-variable' false positive, where the variable is assigned through an import. Closes issue #196. * Definition order is considered for classes, function arguments and annotations. Closes issue #257. * Don't emit 'unused-variable' when assigning to a nonlocal. Closes issue #275. * Do not let ImportError propagate from the import checker, leading to crash in some namespace package related cases. Closes issue #203. * Don't emit 'pointless-string-statement' for attribute docstrings. Closes issue #193. * Use the proper mode for pickle when opening and writing the stats file. Closes issue #148. * Don't emit hidden-method message when the attribute has been monkey-patched, you're on your own when you do that. * Only emit attribute-defined-outside-init for definition within the same module as the offended class, avoiding to mangle the output in some cases. * Don't emit 'unnecessary-lambda' if the body of the lambda call contains call chaining. Closes issue #243. * Don't emit 'missing-docstring' when the actual docstring uses `.format`. Closes issue #281. 2014-04-30 -- 1.2.1 * Restore the ability to specify the init-hook option via the configuration file, which was accidentally broken in 1.2.0. * Add a new warning [bad-continuation] for badly indentend continued lines. * Emit [assignment-from-none] when the function contains bare returns. Fixes BitBucket issue #191. * Added a new warning for closing over variables that are defined in loops. Fixes Bitbucket issue #176. * Do not warn about \u escapes in string literals when Unicode literals are used for Python 2.*. Fixes BitBucket issue #151. * Extend the checking for unbalanced-tuple-unpacking and unpacking-non-sequence to instance attribute unpacking as well. * Fix explicit checking of python script (1.2 regression, #219) * Restore --init-hook, renamed accidentally into --init-hooks in 1.2.0 (#211) * Add 'indexing-exception' warning, which detects that indexing an exception occurs in Python 2 (behaviour removed in Python 3). 2014-04-18 -- 1.2.0 * Pass the current python paths to pylint process when invoked via epylint. Fixes BitBucket issue #133. * Add -i / --include-ids and -s / --symbols back as completely ignored options. Fixes BitBucket issue #180. * Extend the number of cases in which logging calls are detected. Fixes bitbucket issue #182. * Improve pragma handling to not detect pylint:* strings in non-comments. Fixes BitBucket issue #79. * Do not crash with UnknownMessage if an unknown message ID/name appears in disable or enable in the configuration. Patch by Cole Robinson. Fixes bitbucket issue #170. * Add new warning 'eval-used', checking that the builtin function `eval` was used. * Make it possible to show a naming hint for invalid name by setting include-naming-hint. Also make the naming hints configurable. Fixes BitBucket issue #138. * Added support for enforcing multiple, but consistent name styles for different name types inside a single module; based on a patch written by [email protected]. * Also warn about empty docstrings on overridden methods; contributed by [email protected]. * Also inspect arguments to constructor calls, and emit relevant warnings; contributed by [email protected]. * Added a new configuration option logging-modules to make the list of module names that can be checked for 'logging-not-lazy' et. al. configurable; contributed by [email protected]. * ensure init-hooks is evaluated before other options, notably load-plugins (#166) * Python 2.5 support restored: fixed small issues preventing pylint to run on python 2.5. Bitbucket issues #50 and #62. * bitbucket #128: pylint doesn't crash when looking for used-before-assignment in context manager assignments. * Add new warning, 'bad-reversed-sequence', for checking that the reversed() builtin receive a sequence (implements __getitem__ and __len__, without being a dict or a dict subclass) or an instance which implements __reversed__. * Mark `file` as a bad function when using python2 (closes #8). * Add new warning 'bad-exception-context', checking that `raise ... from ...` uses a proper exception context (None or an exception). * Enhance the check for 'used-before-assignment' to look for 'nonlocal' uses. * Emit 'undefined-all-variable' if a package's __all__ variable contains a missing submodule (closes #126). * Add a new warning 'abstract-class-instantiated' for checking that abstract classes created with `abc` module and with abstract methods are instantied. * Do not warn about 'return-arg-in-generator' in Python 3.3+. * Do not warn about 'abstract-method' when the abstract method is implemented through assignment (#155). * Improve cyclic import detection in the case of packages, patch by Buck Golemon * Add new warnings for checking proper class __slots__: `invalid-slots-object` and `invalid-slots`. * Search for rc file in `~/.config/pylintrc` if `~/.pylintrc` doesn't exists (#121) * Don't register the newstyle checker w/ python >= 3 * Fix unused-import false positive w/ augment assignment (#78) * Fix access-member-before-definition false negative wrt aug assign (#164) * Do not attempt to analyze non python file, eg .so file (#122)
Upstream changes: 1.2.0 2015-04-14 07:13:00+0000 - [core] bundle libyaml #248 (Kazuho Oku) - [core] implement master-worker process mode and daemon mode (bundles Server::Starter) #258 #270 (Kazuho Oku) - [file] more mime-types by default #250 #254 #280 (Tatsuhiko Kubo, George Liu, Kazuho Oku) - [file][http1] fix connection being closed if the length of content is zero #276 (Kazuho Oku) - [headers] fix heap overrun during configuration #251 (Kazuho Oku) - [http2] do not delay sending PUSH_PROMISE #221 (Kazuho Oku) - [http2] reduce memory footprint under high load #271 (Kazuho Oku) - [http2] fix incorrect error sent when number of streams exceed the limit #268 (Kazuho Oku) - [proxy] fix heap overrun when building request sent to upstream #266 #269 (Moto Ishizawa, Kazuho Oku) - [proxy] fix laggy response in case the length of content is zero #274 #276 (Kazuho Oku) - [SSL] fix potential stall while reading data from client #268 (Kazuho Oku) - [SSL] bundle LibreSSL #236 #272 (Kazuho Oku) - [SSL] obtain source-level compatibility with BoringSSL #228 (Kazuho Oku) - [SSL] add directive `listen.ssl.cipher-preference` for controlling the selection logic of cipher-suites #233 (Kazuho Oku) - [SSL] disable TLS compression #252 (bisho) - [libh2o] fix C++ compatibility (do not use empty struct) #225 (Kazuho Oku) - [libh2o] search external dependencies using pkg-config #227 (Kazuho Oku) - [misc] fix GCC version detection bug used for controlling compiler warnings #224 (Kazuho Oku) - [misc] check merory allocation failures in socket pool #265 (Tatsuhiko Kubo) 1.1.1 2015-03-09 06:12:00+0000 - [proxy] fix crash on NetBSD when upstream connection is persistent #217 (Kazuho Oku) - [misc] fix compile error on FreeBSD #211 #212 (Syohei Yoshida) 1.1.0 2015-03-06 06:41:00+0000 - [core][file] send redirects appending '/' as abs-path redirects #209 (Kazuho Oku) - [headers] add directives for manipulating response headers #204 (Kazuho Oku) - [http2] do not send a corrupt response if header value is longer than 126 bytes #193 (Kazuho Oku) - [http2] fix interoperability issue with nghttp2 0.7.5 and above 5c42eb1 (Kazuho Oku) - [proxy] send `via` header to upstream #191 (Kazuho Oku) - [proxy] resolve hostname asynchronously #207 (Kazuho Oku) - [proxy] distribute load between upstream servers (using `rand()`) #208 (Kazuho Oku) - [proxy] fix a bug that may cause a corrupt `location` header being forwarded #190 (Kazuho Oku) - [reproxy] add support for `x-reproxy-url` header #187 #197 (Daisuke Maki, Kazuho Oku) 1.0.1 2015-02-23 05:50:00+0000 - [core] change backlog size from 65,536 to 65,535 #183 (Tatsuhiko Kubo) - [http2] fix assertion failure in HPACK encoder #186 (Kazuho Oku) - [http2] add `extern` to some global variables that were not marked as such #178 (Kazuho Oku) - [proxy] close persistent upstream connection if client abruptly closes the stream #188 (Kazuho Oku) - [proxy] fix internal state corruption in case upstream sends response headers divided into multpile packets #189 (Kazuho Oku) - [SSL] add host header to OCSP request #176 (Masaaki Hirose) - [libh2o] do not require header files under `deps/` when using libh2o #173 (Kazuho Oku) - [libh2o] fix compile error in examples when compiled with `H2O_USE_LIBUV=0` #177 (Kazuho Oku) - [libh2o] in example, add missing / after the reference path #180 (Matthieu Garrigues) - [misc] fix invalid HTML in sample page #175 (Deepak Prakash) 1.0.0 2015-02-18 20:01:00+0000 - [core] add redirect handler #150 (Kazuho Oku) - [core] add `pid-file` directive for specifying the pid file #164 (Kazuho Oku) - [core] connections accepted by host-specific listeners should not be handled by handlers of other hosts #163 (Kazuho Oku) - [core] (FreeBSD) fix a bug that prevented the standalone server from booting when run as root #160 (Kazuho Oku) - [core] switch to pipe-based interthread messaging #154 (Kazuho Oku) - [core] use kqueue on all BSDs #156 (Kazuho Oku) - [access-log] more logging directives: %H, %m, %q, %U, %V, %v #158 (Kazuho Oku) - [access-log] bugfix: header values were not logged when specified using uppercase letters #157 (Kazuho Oku) - [file] add application/json to defalt MIME-types #159 (Tatsuhiko Kubo) - [http2] add support for the finalized version of HTTP/2 #166 (Kazuho Oku) - [http2] fix issues reported by h2spec v0.0.6 #165 (Kazuho Oku) - [proxy] merge the cookie headers before sending to upstream #161 (Kazuho Oku) - [proxy] simplify the configuration directives (and make persistent upstream connections as default) #162 (Kazuho Oku) - [SSL] add configuration directive to preload DH params #148 (Jeff Marrison) - [libh2o] separate versioning scheme using H2O_LIBRARY_VERSION_* #167 (Kazuho Oku) 0.9.2 2015-02-10 04:17:00+0000 - [core] graceful shutdown on SIGTERM #119 (Kazuho Oku) - [core] less TCP errors under high load #81 (Kazuho Oku) - [file] add support for HEAD requests #110 (Mark Hoersken) - [http1] MSIE workaround (send `Cache-Control: private` in place of Vary) #114 (Kazuho Oku) - [http2] support server-push #133 (Kazuho Oku) - [http2] fix spurious RST_STREAMS being sent #132 (Kazuho Oku) - [http2] weight-based distribution of bandwidth #135 (Kazuho Oku) - [proxy] added configuration directive `proxy.preserve-host` #112 (Masahiro Nagano) - [proxy] sends X-Forwarded-For and X-Forwarded-Proto headers #112 (Masahiro Nagano) - [proxy] stability improvements #61 (Kazuho Oku) - [misc] adjustments to make the source code more analyzer-friendly #113,#117 (Nick Desaulniers, Maks Naumov) 0.9.1 2015-01-19 21:13:00+0000 - added configuration directives: ssl/cipher-suite, ssl/ocsp-update-interval, ssl/ocsp-max-failures, expires, file.send-gzip - [http2] added support for draft-16 (draft-14 is also supported) - [http2] dependency-based prioritization - [http2] improved conformance to the specification - [SSL] OCSP stapling (automatically enabled by default) - [SSL] fix compile error with OpenSSL below version 1.0.1 - [file] content negotiation (serving .gz files) - [expires] added support for Cache-Control: max-age - [libh2o] libh2o and the header files installed by `make install` - [libh2o] fix compile error when used from C++ - automatically setuids to nobody when run as root and if `user` directive is not set - automatically raises RLIMIT_NOFILE - uses all CPU cores by default - now compiles on NetBSD and other BSD-based systems
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.
API: * Constructing a Query for a non-reference counted PostingSource object will now try to clone the PostingSource object (as happened in 1.3.4 and earlier). This clone code was removed as part of the changes in 1.3.5 to support optional reference counting of PostingSource objects, but that breaks the case when the PostingSource object is on the stack and goes out of scope before the Query object is used. Issue reported by Till Schäfer and analysed by Daniel Vrátil in a bug report against Akonadi: https://bugs.kde.org/show_bug.cgi?id=363741 * Add BM25PlusWeight class implementing the BM25+ weighting scheme, implemented by Vivek Pal (xapian/xapian#104). * Add PL2PlusWeight class implementing the PL2+ weighting scheme, implemented by Vivek Pal (xapian/xapian#108). * LMWeight: Implement Dir+ weighting scheme as DIRICHLET_PLUS_SMOOTHING. Patch from Vivek Pal. * Add CoordWeight class implementing coordinate matching. This can be useful for specialised uses - e.g. to implement sorting by the number of matching filters. * DLHWeight,DPHWeight,PL2Weight: With these weighting schemes, the formulae can give a negative weight contribution for a term in extreme cases. We used to try to handle this by calculating a per-term lower bound on the contribution and subtracting this from the contribution, but this idea is fundamentally flawed as the total offset it adds to a document depends on what combination of terms that document matches, meaning in general the offset isn't the same for every matching document. So instead we now clamp each term's weight contribution to be >= 0. * TfIdfWeight: Always scale term weight by wqf - this seems the logical approach as it matches the weighting we'd get if we weighted every non-unique term in the query, as well as being explicit in the Piv+ formula. * Fix OP_SCALE_WEIGHT to work with all weighting schemes - previously it was ignored when using PL2Weight and LMWeight. * PL2Weight: Greatly improve upper bound on weight: + Split the weight equation into two parts and maximise each separately as that gives an easily solvable problem, and in common cases the maximum is at the same value of wdfn for both parts. In a simple test, the upper bounds are now just over double the highest weight actually achieved - previously they were several hundred times. This approach was suggested by Aarsh Shah in: xapian/xapian#48 + Improve upper bound on normalised wdf (wdfn) - when wdf_upper_bound > doclength_lower_bound, we get a tighter bound by evaluating at wdf=wdf_upper_bound. In a simple test, this reduces the upper bound on wdfn by 36-64%, and the upper bound on the weight by 9-33%. * PL2Weight: Fix calculation of upper_bound when P2>0. P2 is typically negative, but for a very common term it can be positive and then we should use wdfn_lower not wdfn_upper to adjust P_max. * Weight::unserialise(): Check serialised form is empty when unserialising parameter-free schemes BoolWeight, DLHWeight and DPHWeight. * TermGenerator::set_stopper_strategy(): New method to control how the Stopper object is used. Patch from Arnav Jain. * QueryParser: Fix handling of CJK query over multiple prefixes. Previously all the n-gram terms were AND-ed together - now we AND together for each prefix, then OR the results. Fixes #719, reported by Aaron Li. * Add Database::get_revision() method which provides access to the database revision number for chert and glass, intended for use by xapiand. Marked as experimental, so we don't have to go through the usual deprecation cycle if this proves not to be the approach we want to take. Fixes #709, reported by German M. Bravo. * Mark RangeProcessor constructor as `explicit`. * Update to Unicode 9.0.0. * Reimplement ESet and ESetIterator as we did for MSet and MSetIterator in 1.3.5. ESetIterator internally now counts down to the end of the ESet, so the end test is now against 0, rather than against eset.size(). And more of the trivial methods are now inlined, which reduces the number of relocations needed to load the library, and should give faster code which is a very similar size to before. * MSetIterator and ESetIterator are now STL-compatible random_access_iterators (previously they were only bidirectional_iterators). * TfIdfWeight: Support freq and squared IDF normalisations. Patch from Vivek Pal. * New Xapian::Query::OP_INVALID to provide an "invalid" query object. * Reject OP_NEAR/OP_PHRASE with non-leaf subqueries early to avoid a potential segmentation fault if the non-leaf subquery decayed at just the wrong moment. See TritonDataCenter#508. * Reduce positional queries with a MatchAll or PostingSource subquery to MatchNothing (since these subqueries have no positional information, so the query can't match). * Deprecate ValueRangeProcessor and introduce new RangeProcessor class as a replacement. RangeProcessor()::operator()() method returns Xapian::Query, so a range can expand to any query. OP_INVALID is used to signal that a range is not recognised. Fixes #663. * Combining of ranges over the same quantity with OP_OR is now handled by an explicit "grouping" parameter, with a sensible default which works for value range queries. Boolean term prefixes and FieldProcessor now support "grouping" too, so ranges and other filters can now be grouped together. * Formally deprecate WritableDatabase::flush(). The replacement commit() method was added in 1.1.0, so code can be switched to use this and still work with 1.2.x. * Fix handling of a self-initialised PIMPL object (e.g. Xapian::Query q(q);). Previously the uninitialised pointer was copied to itself, resulting in undefined behaviour when the object was used to destroyed. This isn't something you'd see in normal code, but it's a cheap check which can probably be optimised away by the compiler (GCC 6 does). * The Snipper class has been replaced with a new MSet::snippet() method. The implementation has also been redone - the existing implementation was slower than ideal, and didn't directly consider the query so would sometimes selects a snippet which doesn't contain any of the query terms (which users quite reasonably found surprising). The new implementation is faster, will always prefer snippets containing query terms, and also understands exact phrases and wildcards. Fixes TritonDataCenter#211. * Add optional reference counting support for ErrorHandler, ExpandDecider, KeyMaker, PostingSource, Stopper and TermGenerator. Fixes TritonDataCenter#186, reported by Richard Boulton. (ErrorHandler's reference counting isn't actually used anywhere in xapian-core currently, but means we can hook it up in 1.4.x if ticket TritonDataCenter#3 gets addressed). * Deprecate public member variables of PostingSource. The new getters and/or setters added in 1.2.23 and 1.3.5 are preferred. Fixes TritonDataCenter#499, reported by Joost Cassee. * Reimplement MSet and MSetIterator. MSetIterator internally now counts down to the end of the MSet, so the end test is now against 0, rather than against mset.size(). And more of the trivial methods are now inlined, which reduces the number of relocations needed to load the library, and should give faster code which is a very similar size to before. * Only issue prefetch hints for documents if MSet::fetch() is called. It's not useful to send the prefetch hint right before the actual read, which was happening since the implementation of prefetch hints in 1.3.4. Fixes #671, reported by Will Greenberg. * Fix OP_ELITE_SET selection in multi-database case - we were selecting different sets for each subdatabase, but removing the special case check for termfreq_max == 0 solves that. * Remove "experimental" marker from FieldProcessor, since we're happy with the API as-is. Reported by David Bremner on xapian-discuss. * Remove "experimental" marker from Database::check(). We've not had any negative feedback on the current API. * Databse::check() now checks that doccount <= last_docid. * Database::compact() on a WritableDatabase with uncommitted changes could produce a corrupted output. We now throw Xapian::InvalidOperationError in this case, with a message suggesting you either commit() or open the database from disk to compact from. Reported by Will Greenberg on #xapian-discuss * Add Arabic stemmer. Patch from Assem Chelli in xapian/xapian#45 * Improve the Arabic stopword list. Patch from Assem Chelli. * Make functions defined in xapian/iterator.h 'inline'. * Don't force the user to specify the metric in the geospatial API - GreatCircleMetric is probably what most users will want, so a sensible default. * Xapian::DBCHECK_SHOW_BITMAP: This was added in 1.3.0 (so has never been in a stable release) and was superseded by Xapian::DBCHECK_SHOW_FREELIST in 1.3.2, so just remove it. * Make setting an ErrorHandler a no-op - this feature is deprecated and we're not aware of anyone using it. We're hoping to rework ErrorHandler in 1.4.x, which will be simpler without having to support the current behaviour as well as the new. See TritonDataCenter#3. * Update to Unicode 8.0.0. Fixes #680. * Overhaul database compaction API. Add a Xapian::Database::compact() method, with the Database object specifying the source database(s). Xapian::Compactor is now just a functor to use if you want to control progress reporting and/or the merging of user metadata. The existing API has been reimplemented using the new one, but is marked as deprecated. * Add support for a default value when sorting. Fixes TritonDataCenter#452, patch from Richard Boulton. * Make all functor objects non-copyable. Previously some were, some weren't, but it's hard to correctly make use of this ability. Fixes #681. * Fix use after free with WILDCARD_LIMIT_MOST_FREQUENT. If we tried to open a postlist after processing such a wildcard, the postlist hint could be pointing to a PostList object which had been deleted. Fixes #696, reported by coventry. * Add support for optional reference counting of MatchSpy objects. * Improve Document::get_description() - the output is now always valid UTF-8, doesn't contain implementation details like "Document::Internal", and more clearly reports if the document is linked to a database. * Remove XAPIAN_CONST_FUNCTION marker from sortable_serialise_() helper, as it writes to the passed in buffer, so it isn't const or pure. Fixes decvalwtsource2 testcase failure when compiled with clang. * Make PostingSource::set_maxweight() public - it's hard to wrap for the bindings as a protected method. Fixes TritonDataCenter#498, reported by Richard Boulton. * Database: + Add new flag Xapian::DB_RETRY_LOCK which allows opening a database for writing to wait until it can get a write lock. (Fixes TritonDataCenter#275, reported by Richard Boulton). + Fix Database::get_doclength_lower_bound() over multiple databases when some are empty or consist only of zero-length documents. Previously this would report a lower bound of zero, now it reports the same lowest bound as a single database containing all the same documents. + Database::check(): When checking a single table, handle the ".glass" extension on glass database tables, and use the extension to guide the decision of which backend the table is from. * Query: + Add new OP_WILDCARD query operator, which expands wildcards lazily, so now we create the PostList tree for a wildcard directly, rather than creating an intermediate Query tree. OP_WILDCARD offers a choice of ways to limit wildcard expansion (no limit, throw an exception, use the first N by term name, or use the most frequent N). (See tickets TritonDataCenter#48 and #608). * QueryParser: + Add new set_max_expansion() method which provides access to OP_WILDCARD's choice of ways to limit expansion and can set limits for partial terms as well as for wildcards. Partial terms now default to the 100 most frequent matching terms. (Completes #608, reported by boomboo). + Deprecate set_max_wildcard_expansion() in favour of set_max_expansion(). * Add support for optional reference counting of FieldProcessor and ValueRangeProcessor objects. * Update Unicode character database to Unicode 7.0.0. * New Xapian::Snipper class from Mihai Bivol's GSOC 2012 project. (mostly fixes TritonDataCenter#211) * Fix all get_description() methods to always return UTF-8 text. (fixes #620) * Database::check(): + Alter to take its "out" parameter as a pointer to std::ostream instead of a reference, and make passing NULL mean "do not produce output", and make the second and third parameters optional, defaulting to a quiet check. + Escape invalid UTF-8 data in keys and tags reported by xapian-check, using the same code we use to clean up strings returned by get_description() methods. + Correct failure message which talks above the root block when it's actually testing a leaf key. + Rename DBCHECK_SHOW_BITMAP to DBCHECK_SHOW_FREELIST (old name still provided for now, but flagged as deprecated - DBCHECK_SHOW_BITMAP was new in 1.3.0, so will likely be removed before 1.4.0). * Methods and functions which take a string to unserialise now consistently call that parameter "serialised". * Weight: Make number of distinct terms indexing each document and the collection frequency of the term available to subclasses. Patch from Gaurav Arora's Language Modelling branch. * WritableDatabase: Add support for multiple subdatabases, and support opening a stub database containing multiple subdatabases as a WritableDatabase. * WritableDatabase can now be constructed from just a pathname (defaulting to opening the database with DB_CREATE_OR_OPEN). * WritableDatabase: Add flags which can be bitwise OR-ed into the second argument when constructing: + Xapian::DB_NO_SYNC: to disable use of fsync, etc + Xapian::DB_DANGEROUS: to enable in-place updates + Xapian::DB_BACKEND_CHERT: if creating, create a chert database + Xapian::DB_BACKEND_GLASS: if creating, create a glass database + Xapian::DB_NO_TERMLIST: create a database without a termlist (see TritonDataCenter#181) + Xapian::DB_FULL_SYNC flag - if this is set for a database, we use the Mac OS X F_FULL_SYNC instead of fdatasync()/fsync()/etc on the version file when committing. * Database: Add optional flags argument to constructor - the following can be bitwise OR-ed into it: + Xapian::DB_BACKEND_CHERT (only open a chert database) + Xapian::DB_BACKEND_GLASS (only open a glass database) + Xapian::DB_BACKEND_STUB (only open a stub database) * Xapian::Auto::open_stub() and Xapian::Chert::open() are now deprecated in favour of these new flags. * Add LMWeight class, which implements the Unigram Language Modelling weighting scheme. Patch from Gaurav Arora. * Add implementations of a number of DfR weighting schemes (BB2, DLH, DPH, IfB2, IneB2, InL2, PL2). Patches from Aarsh Shah. * Add support for the Bo1 query expansion scheme. Patch from Aarsh Shah. * Add Enquire::set_time_limit() method which sets a timelimit after which check_at_least will be disabled. * Database: Trying to perform operations on a database with no subdatabases now throws InvalidOperationError not DocNotFoundError. * Query: Implement new OP_MAX query operator, which returns the maximum weight of any of its subqueries. (see TritonDataCenter#360) * Query: Add methods to allow introspection on Query objects - currently you can read the leaf type/operator, how many subqueries there are, and get a particular subquery. For a query which is a term, Query::get_terms_begin() allows you to get the term. (see TritonDataCenter#159) * Query: Only simplify OP_SYNONYM with a single subquery if that subquery is a term or MatchAll. * Avoid two vector copies when storing term positions in most common cases. * Reimplement version functions to use a single function in libxapian which returns a pointer to a static const struct containing the version information, with inline wrappers in the API header which call this. This means we only need one relocation instead of 4, reducing library load time a little. * Make TermGenerator flags an anonymous enum, and typedef TermGenerator::flags to int for backward compatibility with existing user code which uses it. * Stem: Fix incorrect Unicode codepoints for o-double-acute and u-double-acute in the Hungarian Snowball stemmer. Reported by Tom Lane to snowball-discuss. * Stem: Add an early english stemmer. * Provide the stopword lists from Snowball plus an Arabic one, installed in ${prefix}/share/xapian-core/stopwords/. Patch from Assem Chelli, fixes TritonDataCenter#269. * Improve check for direct inclusion of Xapian subheaders in user code to catch more cases. * Add simple API to help with creating language-idiomatic iterator wrappers in <xapian/iterator.h>. * Give an compilation error if user code tries to include API headers other than xapian.h directly - these other headers are an internal implementation detail, but experience has shown that some people try to include them directly. Please just use '#include <xapian.h>' instead. * Update Unicode character database to Unicode 6.2.0. * Add FieldProcessor class (ticket#128) - currently marked as an experimental API while we sort out how best to sort out exactly how it interacts with other QueryParser features. * Add implementation of several TF-IDF weighting schemes via a new TfIdfWeight class. * Add ExpandDeciderFilterPrefix class which only return terms with a particular prefix. (fixes TritonDataCenter#467) * QueryParser: Adjust handling of Unicode opening/closing double quotes - if a quoted boolean term was started with ASCII double quote, then only ASCII double quote can end it, as otherwise it's impossible to quote a term containing Unicode double quotes. * Database::check(): If the database can't be opened, don't emit a bogus warning about there being too many documents to cross-check doclens. * TradWeight,BM25Weight: Throw SerialisationError instead of NetworkError if unserialise() fails. * QueryParser: Change the default stemming strategy to STEM_SOME, to eliminate the API gotcha that setting a stemmer is ignored until you also set a strategy. * Deprecate Xapian::ErrorHandler. (ticket#3) * Stem: Generate a compact and efficient table to decode language names. This is both faster and smaller than the approach we were using, with the added benefit that the table is auto-generated. * xapian.h: + Add check for Qt headers being included before us and defining 'slots' as a macro - if they are, give a clear error advising how to work around this (previously compilation would fail with a confusing error). + Add a similar check for Wt headers which also define 'slots' as a macro by default. * Update Unicode character database to Unicode 6.1.0. (ticket#497) * TermIterator returned by Enquire::get_matching_terms_begin(), Query::get_terms_begin(), Database::synonyms_begin(), QueryParser::stoplist_begin(), and QueryParser::unstem_begin() now stores the list of terms to iterate much more compactly. * QueryParser: + Allow Unicode curly double quote characters to start and/or end phrases. + The set_default_op() method will now reject operators which don't make sense to set. The operators which are allowed are now explicitly documented in the API docs. * Query: The internals have been completely reimplemented (ticket#280). The notable changes are: + Query objects are smaller and should be faster. + More readable format for Query::get_description(). + More compact serialisation format for Query objects. + Query operators are no longer flattened as you build up a tree (but the query optimiser still combines groups of the same operator). This means that Query objects are truly immutable, and so we don't need to copy Query objects when composing them. This should also fix a few O(n*n) cases when building up an n-way query pair-wise. (ticket#273) + The Query optimiser can do a few extra optimisations. * There's now explicit support for geospatial search (this API is currently marked as experimental). (ticket#481) * There's now an API (currently experimental) for checking the integrity of databases (partly addresses ticket#238). * Database::reopen() now returns true if the database may have been reopened (previously it returned void). (ticket#548) * Deprecate Xapian::timeout in favour of POSIX type useconds_t. * Deprecate Xapian::percent and use int instead in the API and our own code. * Deprecate Xapian::weight typedef in favour of just using double and change all uses in the API and our own code. (ticket#560) * Rearrange members of Xapian::Error to reduce its size (from 48 to 40 bytes on x86-64 Linux). * Assignment operators for PositionIterator and TermIterator now return *this rather than void. * PositionIterator, PostingIterator, TermIterator and ValueIterator now handle their reference counts in hand-crafted code rather than using intrusive_ptr/RefCntPtr, which means the compiler can inline the destructor and default constructor, so a comparison to an end iterator should now optimise to a simple NULL pointer check, but without the issues which the ValueIteratorEnd_ proxy class approach had (such as not working in templates or some cases of overload resolution). * Enquire: + Previously, Enquire::get_matching_terms_begin() threw InvalidArgumentError if the query was empty. Now we just return an end iterator, which is more consistent with how empty queries behave elsewhere. + Remove the deprecated old-style match spy approach of using a MatchDecider. * Remove deprecated Sorter class and MultiValueSorter subclass. * Xapian::Stem: + Add stemmers for Armenian (hy), Basque (eu), and Catalan (ca). + Stem::operator= now returns a reference to the assigned-to object. testsuite: * OP_SCALE_WEIGHT: Check top weight is non-zero - if it is zero, tests which try to check that OP_SCALE_WEIGHT works will always pass. * testsuite: Check SerialisationError descriptions from Xapian::Weight subclasses mention the weighting scheme name. * Merge queryparsertest and termgentest into apitest. Their testcases now use the backend manager machinery in the testharness, so we don't have to hard-code use of inmemory and chert backends, but instead run them under all backends which support the required features. This fixes some test failures when both chert and glass are disabled due to trying to run spelling tests with the inmemory backend. * Avoid overflowing collection frequency in totaldoclen1. We're trying to test total document length doesn't wrap, so avoid collection freq overflowing in the process, as that triggers errors when running the testsuite under ubsan. We should handle collection frequency overflow better, but that's a separate issue. * Add some test coverage for ESet::get_ebound(). * Fix testcase notermlist1 to check correct table extension - ".glass" not ".DB" (chert doesn't support DB_NO_TERMLIST). * unittest: We can't use Assert() to unit test noexcept code as it throws an exception if it fails. Instead set up macros to set a variable and return if an assertion fails in a unittest testcase, and check that variable in the harness. * Add unit test for internal C_isupper(), etc functions. * If command line option --verbose/-v isn't specified, set the verbosity level from environmental variable VERBOSE. * Re-enable replicate3 for glass, as it no longer fails. * Add more test coverage for get_unique_terms(). * Don't leave an extra fd open when starting xapian-tcpsrv for remotetcp tests. * Extend checkstatsweight1 to check that Weight::get_collection_freq() returns the same number as Database::get_collection_freq(). * queryparsertest: Add testcase for FieldProcessor on boolean prefix with quoted contents. * queryparsertest: Enable some disabled cases which actually work (in some cases with slightly tweaked expected answers which are equivalent to those that were shown). * Make use of the new writable multidatabase feature to simplify the multi-database handling in the test harness. * Change querypairwise1_helper to repeat the query build 100 times, as with a fast modern machine we were sometimes trying with so many subqueries that we would run out of stack. * apitest: Use Xapian::Database::check() in cursordelbug1. (partly addresses TritonDataCenter#238) * apitest: Test Query ops with a single MatchAll subquery. * apitest: New testcase readonlyparentdir1 to ensure that commit works with a read-only parent directory. * tests/generate-api_generated: Test that the string returned by a get_description() method isn't empty. * Use git commit hash in title of test coverage reports generated from a git tree. * Make unittest use the test harness, so it gets all the valgrind and fd leak checks, and other handy features all the other tests have. * Improve test coverage in several places. * Compress generated HTML files in coverage report. matcher: * Fix stats passed to Weight with OP_SYNONYM. Previously the number of unique terms was never calculated, and a term which matched all documents would be optimised to an all-docs postlist, which fails to supply the correct wdf info. * Use floating point calculation for OR synonym freq estimates. The division was being done as an integer division, which means the result was always getting rounded down rather than rounded to the nearest integer. * Fix upper bound on matches for OP_XOR. Due to a reversed conditional, the estimate could be one too low in some cases where the XOR matched all the documents in the database. * Improve lower bound on matches for OP_XOR. Previously the lower bound was always set to 0, which is valid, but we can often do better. * Optimise value range which is a superset of the bounds. If the value frequency is equal to the doccount, such a range is equivalent to MatchAll, and we now avoid having to read the valuestream at all. * Optimise OP_VALUE_RANGE when the upper bound can't be exceeded. In this case, we now use ValueGePostList instead of ValueRangePostList. * Streamline collation of statistics for use by weighting schemes - tests show a 2% or so increase in speed in some cases. * If a term matches all documents and its weight doesn't depend on its wdf, we can optimise it to MatchAll (the previous requirement that maxpart == 0 was unnecessarily strict). * Fix the check for a term which matches all documents to use the sub-db termfreq, not the combined db termfreq. * When we optimise a postlist for a term which matches all documents to use MatchAll, we still need to set a weight object on it to get percentages calculated correctly. * Drop MatchNothing subqueries in OR-like situations in add_subquery() rather than adding them and then handling it later. * Handle the left side of AND_NOT and AND_MAYBE being MatchNothing in add_subquery() rather than in done(). * Handle QueryAndLike with a MatchNothing subquery in add_subquery() rather than done(). * Query: Multi-way operators now store their subquery pointers in a custom class rather than std::vector<Xapian::Query>. The custom class take the same amount of space, or often less. It's particularly efficient when there are two subqueries, which is very desirable as we no longer flatten a subtree of the same operator as we build the query. * Optimise an unweighted query term which matches all the documents in a subdatabase to use the "MatchAll" postlist. (ticket#387) glass backend: * Fix allterms with prefix on glass with uncommitted changes. Glass aims to flush just the relevant postlist changes in this case but the end of the range to flush was wrong, so we'd only actually flush changes for a term exactly matching the prefix. Fixes #721. * Fix Database::check() parsing of glass changes file header. In practice this was unlikely to actually cause problems. * Make glass the default backend. The format should now be stable, except perhaps in the unlikely event that a bug emerges which requires a format change to address. * Don't explicitly store the 2 byte "component_of" counter for the first component of every Btree entry in leaf blocks - instead use one of the upper bits of the length to store a "first component" flag. This directly saves 2 bytes per entry in the Btree, plus additional space due to fewer blocks and fewer levels being needed as a result. This particularly helps the position table, which has a lot of entries, many of them very small. The saving would be expected to be a little less than the saving from the change which shaved 2 bytes of every Btree item in 1.3.4 (since that saved 2 bytes multiple times for large entries which get split into multiple items). A simple test suggests a saving of several percent in total DB size, which fits that. This change reduces the maximum component size to 8194, which affects tables with a 64KB blocksize in normal use and tables with >= 16KB blocksize with full compaction. * Refactor glass backend key comparison - == and < operations are replaced by a compare() function returns negative, 0 or positive (like strcmp(), memcmp() and std::string::compare()). This allows us to avoid a final compare to check for equality when binary chopping, and to terminate early if the binary chop hits the exact entry. * If a cursor is moved to an entry which doesn't exist, we need to step back to the first component of previous entry before we can read its tag. However we often don't actually read its tag (e.g. if we only wanted the key), so make this stepping back lazy so we can avoid doing it when we don't want to read the tag. * Avoid creating std::string objects to hold data when compressing and decompressing tags with zlib. * Store minimum compression length per table in the version file, with 0 meaning "don't compress". Currently you can only change this setting with a hex editor on the file, but now it is there we can later make use of it without needing a database format change. * Database::check() now performs additional consistency checks for glass. Reported by Jean-Francois Dockes and Bob Cargill via xapian-discuss. * Database::check(): check docids don't exceed db_last_docid when checking a single glass table. * We now throw DatabaseCorruptError in a few cases where it's appropriate but we didn't previously, in particular in the case where all the files in a DB have been truncated to zero size (which makes handling of this case consistent with chert). * Fix compaction to a single file which already exists. This was hanging. Noted by Will Greenberg on #xapian. * Shave 2 bytes of every Btree item (which will probably typically reduce database size by several percent). * More compact item format for branch blocks - 2 bytes per item smaller. This means each branch block can branch more ways, reducing the number of Btree levels needed, which is especially helpful for cold-cache search times. * Track an upper bound on spelling word frequency. This isn't currently used, but will be useful for improving the spelling algorithm, and we want to stabilise the glass backend format. See TritonDataCenter#225, reported by Philip Neustrom. * Support 64-bit docids in the glass backend on-disk format. This changes the encoding used by pack_uint_preserving_sort() to one which supports 64 bit values, and is a byte smaller for values 16384-32767, and the same size for all other 32 bit values. Fixes #686, from original report by James Aylett. * Use memcpy() not memmove() when no risk of overlap. * Store length of just the key data itself, allowing keys to be up to 255 bytes long - the previous limit was 252. * Change glass to store DB stats in the version file. Previously we stored them in a special item in the postlist table, but putting them in the version file reduces the number of block reads required to open the database, is simpler to deal with, and means we can potentially recalculate tight upper and lower bounds for an existing database without having to commit a new revision. * Add support for a single-file variant for glass. Currently such databases can only be opened for reading - to create one you need to use xapian-compact (or its API equivalent). You can embed such databases within another file, and open them by passing in a file descriptor open on that file and positioned at the offset the database starts at). Database::check() also supports them. Fixes #666, reported by Will Greenberg (and previously suggested on xapian-discuss by Emmanuel Engelhart). * Avoid potential DB corruption with full-compaction when using 64K blocks. * Where posix_fadvise() is available, use it to prefetch postlist Btree blocks from the level below the root block which will be needed for postlists of terms in the query, and similarly for the docdata table when MSet::fetch() is called. Based on patch by Will Greenberg in #671. * When reporting freelist errors during a database check, distinguish between a block in use and in the freelist, and a block in the freelist more than once. * Fix compaction and database checking for the change to the format of keys in the positionlist table which happened in 1.3.2. * After splitting a block, we always insert the new block in the parent right after the block it was split from - there's no need to binary chop. * Avoid infinite recursion when we hit the end of the freelist block we're reading and the end of the block we're writing at the same time. * Fix freelist handling to allow for the newly loaded first block of the freelist being already used up. * 'brass' backend renamed to 'glass' - we decided to use names in ascending alphabetical order to make it easier to understand which backend is newest, and since 'flint' was used recently, we skipped over 'd', 'e' and 'f'. * Change positionlist keys to be ordered by term first rather than docid first, which helps phrase searching significantly. For more efficient indexing, positionlist changes are now batched up in memory and written out in key order. * Use a separate cursor for each position list - now we're ordering the position B-tree by term first, phrase matching would cause a single cursor to cycle between disparate areas of the B-tree and reread the same blocks repeatedly. * Reference count blocks in the btree cursor, so cursors can cheaply share blocks. This can significantly reduce the amount of memory used by cursors for queries which contain a lot of terms (e.g. wildcards which expand to a lot of terms). * Under glass, optimise the turning of a query into a postlist to reuse the cursor blocks which are the same as the previous term's postlist. This is particularly effective for a wildcard query which expands to a lot of terms. * Keep track of unused blocks in the Btrees using freelists rather than bitmaps. (fixes TritonDataCenter#40) * Eliminate the base files, and instead store the root block and freelist pointers in the "iamglass" file. * When compacting, sync all the tables together at the end. * In DB_DANGEROUS mode, update the version file in-place. * Only actually store the document data if it is non-empty. The table which holds the document data is now lazily created, so won't exist if you never set the document data. * Iterating positional data now decodes it lazily, which should speed up phrases which include common words. * Compress changesets in brass replication. Increments the changeset version. Ticket TritonDataCenter#348 * Restore two missing lines in database checking where we report a block with the wrong level. * When checking if a block was newly allocated in this revision, just look at its revision number rather than consulting the base file's bitmap. remote backend: * Improve handling of invalid remote stub entries: Entries without a colon now give an error rather than being quietly skipped; IPv6 isn't yet supported, but entries with IPv6 addresses now result in saner errors (previously the colons confused the code which looks for a port number). * Fix hook for remote support of user weighting schemes. The commented-out code used entirely the wrong class - now we use the server object we have access to, and forward the method to the class which needs it. * Avoid dividing zero by zero when calculating the average length for an empty database. * Bump remote protocol version to 38.0, due to extra statistics being tracked for weighting. * Make Weight::Internal track if any max_part values are set, so we don't need to serialise them when they've not been set. * Prefix compress list of terms and metadata keys in the remote protocol. This requires a remote protocol major version bump. * When propagating exceptions from a remote backend server, the protocol now sends a numeric code to represent which exception is being propagated, rather than the name of the type, as a number can be turned back into an exception with a simple switch statement and is also less data to transfer. (ticket#471) * Remote protocol (these changes require a protocol major version bump): + Unify REPLY_GREETING and REPLY_UPDATE. + Send (last_docid - doccount) instead of last_docid and (doclen_ubound - doclen_lbound) instead of doclen_ubound. * Remove special check which gives a more helpful error message when a modern client is used against a remote server running Xapian <= 0.9.6. chert backend: * When using 64-bit Xapian::docid, consistently use the actual maximum valid docid value rather instead of the maximum value the type can hold. * Where posix_fadvise() is available, use it to prefetch postlist Btree blocks from the level below the root block which will be needed for postlists of terms in the query, and similarly for the record table when MSet::fetch() is called. Based on patch by Will Greenberg in #671. * Fix problems with get_unique_terms() on a modified chert database. * Fix xapian-check on a single chert table, which seg faulted in 1.3.2. * Improve DBCHECK_FIX: + if fixing a whole database, we now take the revision from the first table we successfully look at, which should be correct in most cases, and is definitely better than trying to determine the revision of each broken table independently. + handle a zero-sized .DB file. + After we successfully regenerate baseA, remove any empty baseB file to prevent it causing problems. Tracked down with help from Phil Hands. * Iterating positional data now decodes it lazily, which should speed up phrases which include common words. flint backend: * Remove flint backend.
Hey All,
The SMF manifest seems to be broken and the file /opt/local/lib/svc/method/postgresql is also missing.
Regards
The text was updated successfully, but these errors were encountered: