Changes in the successive versions of Mikmatch ============================================== Mikmatch is the port of micmatch 0.700 to the "new" Camlp4 (3.10). Mikmatch is not compatible with Camlp4 <= 3.09 or Camlp5. Please send bug reports, comments or feature requests to Martin Jambon or to the public forum at http://groups.google.com/group/micmatch !!! = some incompatibilities opt = optimizations +ui = additions in the user interface -ui = restrictions in the user interface bug = bug or security fix doc = major changes in the documentation pkg = changes in the structure of the package or in the installation procedure 2011-10-21 1.0.4: [bug] Fixed bug consisting in Not_found exception being raised in an alternative capturing an empty string. (losing compatibility with pcre-ocaml versions from 2004 or earlier) 1.0.3: [!!!] Builds with camlp4 3.12.0 but no longer with 3.11. Thanks to Jake Donham for the patch. 1.0.2: [bug] Fixed important name scoping bug (definitions were inserted too early). [bug] Fixed bug that was causing directives to be ignored. 1.0.1: [!!!] Support for Camlp4 3.11.0, including toplevel support which wasn't possible with Camlp4 3.10. Dropped support for Camlp4 3.10 (please use mikmatch 1.0.0 instead). Will restore compatibility with Camlp4 3.10 only in case of significant new mikmatch features. [pkg] Added dependency towards tophide. It is not a strict requirement but improves the toplevel experience. 1.0.0: [*] First release of mikmatch, translation of micmatch 0.700 for the "new camlp4" 3.10. [pkg] License: all source code is now distributed under the BSD license. [pkg] All occurrences of "micmatch" have been replaced by "mikmatch". [-ui] Temporarily no toplevel support for the syntax features, waiting for the availability of camlp4 filters for toplevel phrases. [pkg] Custom toplevels are no longer built and installed. [+ui] No more polymorphic value restriction. Functions that use mikmatch patterns can now be polymorphic. Many identifiers with the "__mikmatch" prefix are now visible as module structure items. [-ui] Dropped support for Camlp4's revised syntax. [-ui] No more -thread option. Only matching patterns that contain @ use a table that is shared among threads. User code is responsible for using locks if needed. ------------------------- Micmatch (for camlp4 <= 3.09) ------------------ This is the history for micmatch before the port to Camlp4 3.10, renamed mikmatch. 0.700: [bug] It was not possible to use "Not" outside of micmatch_pcre regexps. This is now fixed. 0.699: [+ui] added CAPTURE and COLLECTOBJ 0.698: [bug] fixed dynamic linking problems on MacOS/NetBSD by removing version_filter. As a consequence, only recent versions of camlp4 are now supported (starting from 3.08.4, maybe earlier). [bug] fixed missing dependency on "common" for "pcre" and "str" targets in main Makefile 0.697: [bug] installation of executables now correctly follows $BINDIR or $PREFIX/bin [+ui] new FILTER macro which returns true or false [+ui] changed grammar entry level of macros (now "expr1" instead of "top"). Allows for less parentheses. [pkg] added dependency to the Unix library [+ui] added filename globbing in the Micmatch library [+ui] added experimental support for views 0.696: [pkg] removed micmatch_pcre.godiva which is a big source of trouble 0.695: [pkg] minor changes for GODI [bug] added .PHONY targets in Makefile 0.694: [+ui] int and float predefined regexps are not experimental anymore [bug] fixed null-character related bugs (Pcre.quote does not escape them) [bug] fixed bug with ocaml 3.08.1 (and probably earlier): Not_found was raised during initialization of the preprocessing library (deletion of grammar rules which didn't exist) 0.693: [+ui] added support for regexps with arguments (gaps of the form @some_expr) which are evaluated at runtime. It uses a cache which stores the most recently used compiled regexps for different sets of arguments. [opt] optionally shared data structures are now created only where necessary (just reduces the code size a little) 0.692: [bug, +ui] added "nan" and "inf" (caseless, optional sign) to the set of strings recognized by the "float" pattern. 0.691: [+ui] experimental addition of predefined regexps "int" and "float" 0.690: [+ui] added support for global shortcut bindings: let / ... / = ... ;; 0.689: [+ui] - added support for shortcuts: let RE ... = ... in ... let / ... / = ... in ... - official support for / ... / as an equivalent of RE ... (patterns) - general support for: let try ... = ... in ... with ... [bug] code with misplaced RE patterns cannot compile anymore 0.688: [+ui] added support for automatic type conversions: (... as x : int) (... as x := int_of_string) (... as x = Zero) [bug] fixed bug which caused some alternative patterns to be ignored. Simplest example that caused the bug: match "c" with (RE "a") | (RE "b") | (RE "c") -> ();; 0.687: [doc] added warning against inaccessible named subgroups or positional markers such as in ("abc" as local !local)* [+ui] added option -do for command-line programs (like sh -c or perl -e) 0.686: [bug] fixed bugs related to patterns matching empty substrings (avoiding infinite loops in such cases; for instance (SPLIT "") and (SPLIT "") ~full:true both work). 0.685: [bug] Fixed the following bugs: - was counting special "any" as 0 characters instead of 1 (lookbehind assertions) - "Not_found" problems with recent versions of Pcre due to the 2004-04-29 change in Pcre.get_substring - silent removal of bindings which don't make sense in assertions (BTW I don't know how to print a precise warning instead) 0.684: [+ui] added support for lookaround assertions (PCRE only): < lookbehind . lookahead > or < lookahead > 0.683: [+ui] added support for positional markers in regexps (e.g. %pos) 0.682: [bug] added compatibility with OCaml 3.09+dev14 0.681: [bug] fixed bug in REPLACE_FIRST 0.680: [bug] replaced the regexp-pp package with the newest version for compatibility with OCaml 3.09+dev6 0.679: [+ui] added ~share option to MATCH and SEARCH_FIRST [doc] updated and commented example/shootout.ml 0.678: [+ui] added experimental / ... / syntax in patterns 0.677: [pkg] fixed bugs in META files [+ui] added "save" and "save_lines" functions to the library [bug] now bos, eos, bol and eol assertions work (micmatch_pcre) 0.676: [pkg] added version ID in the name of the archives [bug] - fixed bug which prevented the use of the Camlp4 syntax extension for stream parsers (was due to a wrong LEVEL) - fixed fatal bug in micmatch_str which was accidentally introduced in the last version (was due to an inexisting LEVEL) [+ui] added a short Micmatch.Fixed module for handling text with fixed-width columns. 0.675: [bug] several bugfixes in the installation procedure (correct clean, any name for gmake OK, camlmix not required) [pkg] separate installation of micmatch_pcre (default) and micmatch_str (now optional) 0.674: [+ui] - added full support for PCRE-OCaml, with many additional macros and specifications - POSIX characters classes are now predefined for both micmatch_str and micmatch_pcre - micmatch and micmatch_str are now binary executables so that micmatch scripts can be made self-executable on Unix-like systems [doc] updated the reference manual and the web page [-ui] deprecated use of {123-}. Use {123+} instead. 0.673: [bug] added support for OCaml 3.08.1 (replaced regexp-pp package) 0.672: [+ui,bug] - added checks for unbalanced or redundant local bindings - added support for local backreferences 0.671: [+ui] - added support for backreferences (!ident) - tries alternatives from left to right, and is greedy by default for optional matches (? operator). Not official, since these properties are not specified in the Str library. - function keyword replaced by fun in the revised syntax (still not tested though) 0.670: [+ui] addition of the ~ operator for ignoring case (uses the OCaml definition of case, i.e. the latin1 charset). [doc] created the reference manual 0.669: [opt] tail-recursivity is now preserved (options -direct/-tailrec) [-ui] regexpr{-12} is not valid anymore because it looks strange and ambiguous. regexpr{0-12} should be used instead. regexpr{12-} is still valid. 0.668: [bug] - fixed abusive simplification (missing try ... with) - added missing binding in multithreaded mode - fixed the buggy Makefile on the web page 0.667: [opt] alternatives between charsets handled like unions of charsets 0.666: [*] initial public release (2004-08-02)